SQL Server中DataLength函数和Len函数的区别

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

1.DECLARE @Value varchar(20)  2.SET @Value = 'abc' 3.SELECT DATALENGTH(@Value)  4.SELECT LEN(@Value) 这些语句的返回值都为3。因为varchar类型使用了3个单字节字符来存储三个字符的值。然而,如果使用nVarchar类型来管理相同长度的值,就要占用多一倍的字节:

1.DECLARE @Value nvarchar(20)  2.SET @Value = 'abc' 3.SELECT DATALENGTH(@Value)  4.SELECT LEN(@Value) DATALENGTH()函数返回值为6,因为每个使用Unicode字符集的字符都要占用2个字节。LEN()函数返回值为3,因为这个函数返回字符数,不是字节数。以下是一个有趣的测试:要存储一个值为2的整型变量,要占用多少个字节?而如果要存储一个值为20亿的整型变量,又将占用多少个字节呢?试一下:

1.DECLARE @Value1 int, @Value2 int 2.SET @Value1 = 2  3.SET @Value2 = 2000000000  4.SELECT DATALENGTH(@Value1)  5.SELECT LEN(@Value1)  6.SELECT DATALENGTH(@Value2)  7.SELECT LEN(@Value2) 在这两种情况下,DATALENGTH()函数都返回4。因为int类型不论值是多少,总是使用4个字节。LEN()函数本质上将整型值当成已转换成字符型的数据来处理,所以,在这个例子中,它分别返回1和10,即值的位数。


本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/Hello_World_wusu/archive/2009/10/14/4667452.aspx

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值