sql datalength与len区别
sql datalength与len区别
一、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 datalength与len实例
select len(' str'),len(' str str ')--返回值是4, 8
SELECT
LEN('string系'),--7
LEN('string系 '),--7
DATALENGTH('string系'),--8
DATALENGTH('string系 '),--11
LEN(N'string系'),--7
LEN(N'string系 '),--7
DATALENGTH(N'string系'),--14
DATALENGTH(N'string系 ')--20
DECLARE @d VARCHAR(20),--可变长度,非 Unicode 字符数据。
@e NCHAR(20),--n 个字符的固定长度的 Unicode 字符数据。
@f CHAR(20)--固定长度,非 Unicode 字符数据,长度为 n 个字节。
SET @d = 'abc'
SET @e = 'abc'
SET @f = 'abc'
SELECT LEN(@d) AS [LEN],DATALENGTH(@d) AS [DATALENGTH] --3,3
SELECT LEN(@e) AS [LEN],DATALENGTH(@e) AS [DATALENGTH] --3,40
SELECT LEN(@f) AS [LEN],DATALENGTH(@f) AS [DATALENGTH] --3,20