LEN函数的疑问

cheyo车油 2005-10-05 10:00:03
一:

DECLARE @StrBin AS VARCHAR
DECLARE @BinLen AS TINYINT

SET @StrBin = '5423'
SET @BinLen = LEN(@StrBin)
PRINT @BinLen

结果: 1

二:

DECLARE @BinLen AS TINYINT

SET @BinLen = LEN('5423')
PRINT @BinLen

结果: 4


为什么一的结果是1,而不是4??
...全文
70 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
cheyo车油 2005-10-05
  • 打赏
  • 举报
回复
如此及时回复,非常感谢

俺也及时给分 ^_^
MorningTea 2005-10-05
  • 打赏
  • 举报
回复
回复人: jxdjxd1111(qqq) ( ) 信誉:100 2005-10-05 22:04:00 得分: 0


因为一(@StrBin)代表的是字符而不是数字


---〉这个不是这样吧!如果@StrBin=‘5432’,那么(@StrBin)等价于('5423')这个表达式,len取得都是字串,不管中英文,全角半角,都认为一个byte存取一个字符
MorningTea 2005-10-05
  • 打赏
  • 举报
回复
这个与len没有干系,是因为你定义@StrBin 时候没有定义长度,所以默认是一,其他会被截掉

DECLARE @StrBin AS VARCHAR
DECLARE @BinLen AS TINYINT

SET @StrBin = '5423'
SET @BinLen = LEN(@StrBin)
print @StrBin
PRINT @BinLen
/*
5
1
*/



DECLARE @StrBin AS VARCHAR(10)
DECLARE @BinLen AS TINYINT

SET @StrBin = '5423'
SET @BinLen = LEN(@StrBin)
print @StrBin
PRINT @BinLen

/*
5423 --这样才是你真正要付值进取的字串
4
*/

jxdjxd1111 2005-10-05
  • 打赏
  • 举报
回复
因为一(@StrBin)代表的是字符而不是数字

34,590

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧