当前位置:数据库 > SQL语言> 正文

sql datalength与len区别

时间:2014-11-30类别:数据库

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实例

     

  •  
  • SQL 代码   复制
  • 
    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
    
    		
  •  

  • SQL 代码   复制
  • 
    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
    
    				
  •  

    标签:
    上一篇下一篇

    猜您喜欢

    热门推荐