当采用非Unicode编码时,即varchar类型的字符串时,DataLength()和Len()的区别: Len() 字符串表达式的字符数,不计尾部空格,但计头部空格和中间的空格; DataLength() 任何表达式的字节数,包括空格。 当采用UniCode编码时,感兴趣同学的可以自己试一下什么结果。
SELECTLEN(@e)AS[LEN],DATALENGTH(@e)AS[DATALENGTH] --3,40 SELECTLEN(@f)AS[LEN],DATALENGTH(@f)AS[DATALENGTH] --3,20
LEN('string '), DATALENGTH('string'), DATALENGTH('string '), LEN(N'string'), LEN(N'string '), DATALENGTH(N'string'), DATALENGTH(N'string ') will give values 6,6,6,7,6,6,12,14 Gail Shaw SSC Guru Points: 1004504 More actions ...
I'm surprised that you didn't include VARCHAR(10) in your question just to mix things up. FYI, both the datalength and the len are 3 and that is why I use it. DECLARE @NCHAR NCHAR(10) ='ABC' , @nvarcharNVARCHAR(10) = 'ABC' , ...
SQLServer中DataLength()和Len()两内置函数的区别,最近工作中遇到了个问题:在数据库中声明字段类型时char(4),但实际只存储了‘DCE’三个字母,程序中拼装以该字段作为key的Map中,会把‘DCE’+空格作为其Key,这样造成用没加空格的‘DCE’为key去取Value的值是取不出来的
MSSqlServer函数Len()、DataLength() Len() LEN 函数返回文本字段中值的长度(汉字和中文标点为长度1,不包含trailing space)。 用法 SELECT LEN(column_name) DataLength() 函数返回用于表示任何表达式的字节数(汉字和中文标点为长度2,包含trailing space)。
sqlserver 中len和DataLength的区别 https://zhuanlan.zhihu.com/p/342051927 LEN() 函数返回文本字段中值的长度。 DataLength() 函数返回文本字段中值的字符长度。 区别在于:len()只返回字符数,一个汉字代表一个字符。 DataLength()返回的是字节数,一个汉字两个字节。
DataLength() 任何表达式的字节数,包括空格,所以当数据类型是nvarchar时,其实DataLength() 除以2就相当于Len()计算字符串末尾空格后的字符数,所以计算sql server中nvarchar字符串长度的最佳方式就是DataLength() /2。 当采用UniCode编码时,感兴趣的同学可以自己试一下什么结果: ...