论坛首页 综合技术论坛

sql Server 中 datalength 与 len 区别

浏览 2078 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (1)
作者 正文
   发表时间:2016-04-21   最后修改:2016-04-21

一、Len(string_expression)


返回指定字符串表达式的字符数,其中不包含尾随空格。(汉字和中文标点为长度1,不包含trailing space)。


用法
SELECT LEN(column_name) from table_name


备注

如果 expression 的数据类型为 varchar(max)、nvarchar(max) 或 varbinary(max),则为 bigint;否则为 int。
不可以对ntext字段进行计算



二、DataLength(expression)

函数返回用于表示任何表达式的字节数(汉字和中文标点为长度2,包含trailing space)。


用法
SELECT DataLENGTH(column_name) from table_name




三、sql datalength与len区别


1、DataLength()函数返回的是字符串字节的长度,包含后缀空格。而Len()函数返回的是字符串的字符长度,不包含后缀的空格。

2、Len()是忽略后缀空格,前缀空格或字符中间空格是包含的。

3、DataLength()函数返回的是字符串字节的长度,确切地说是字节个数;一个汉字2个字节,英文和数字或其他符号在默认1个字节,但是在unicode时也占2个字节,Len()函数返回的是字符串的字符长度,确切地说是字符个数;一个汉字一个字符。

4、DATALENGTH()函数返回一个用于对值进行管理的字节数,这有助于揭示不同数据类型间的一些有趣差别。当把varchar类型传递给DATALENGTH()和LEN()函数时,它们将返回相同的值:

DECLARE @Value varchar(20)  
SET @Value = 'abc' 
SELECT DATALENGTH(@Value)  
SELECT LEN(@Value) 

 

这些语句的返回值都为3。因为varchar类型使用了3个单字节字符来存储三个字符的值。


5、如果使用nVarchar类型来管理相同长度的值,就要占用多一倍的字节:

DECLARE @Value nvarchar(20)  
SET @Value = 'abc' 
SELECT DATALENGTH(@Value)  
SELECT LEN(@Value) 

 

DATALENGTH()函数返回值为6,因为每个使用Unicode字符集的字符都要占用2个字节。LEN()函数返回值为3,因为这个函数返回字符数,不是字节数。


6、下面这个实例中,DATALENGTH()函数都返回4。因为int类型不论值是多少,总是使用4个字节。LEN()函数本质上将整型值当成已转换成字符型的数据来处理,所以,在这个例子中,它分别返回1和10,即值的位数。

DECLARE @Value1 int, @Value2 int 
SET @Value1 = 2  
SET @Value2 = 2000000000  
SELECT DATALENGTH(@Value1)  
SELECT LEN(@Value1)  
SELECT DATALENGTH(@Value2)  
SELECT LEN(@Value2) 

 


参考资料:sql Server 中 datalength 与 len 区别   http://www.studyofnet.com/news/694.html

 

论坛首页 综合技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics