码迷,mamicode.com
首页 > 数据库 > 详细

SQL Server 函数 LEN 与 DATALENGTH的区别

时间:2014-11-27 16:04:32      阅读:163      评论:0      收藏:0      [点我收藏+]

标签:blog   http   ar   使用   sp   数据   div   art   log   

DATALENGTH()函数返回一个用于对值进行管理的字节数,这有助于揭示不同数据类型间的一些有趣差别。

当把varchar类型传递给DATALENGTH()和LEN()函数时,它们将返回相同的值:

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

 

这些语句的返回值都为3。

因为varchar类型使用了3个单字节字符来存储三个字符的值。然而,如果使用nVarchar类型来管理相同长度的值,就要占用多一倍的字节:

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

 

 

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

LEN()函数返回值为3,因为这个函数返回字符数,不是字节数。

以下是一个有趣的测试:要存储一个值为2的整型变量,要占用多少个字节?而如果要存储一个值为20亿的整型变量,又将占用多少个字节呢?试一下:

DECLARE @Value1 int, @Value2 int 

SET @Value1 = 2  
SET @Value2 = 2000000000  

SELECT DATALENGTH(@Value1)  
SELECT LEN(@Value1)  
SELECT DATALENGTH(@Value2)  
SELECT LEN(@Value2)

 

 

在这两种情况下,DATALENGTH()函数都返回4。

因为int类型不论值是多少,总是使用4个字节。

LEN()函数本质上将整型值当成已转换成字符型的数据来处理,所以,在这个例子中,它分别返回1和10,即值的位数。

 

原文:http://blog.csdn.net/Hello_World_wusu/article/details/4667452

SQL Server 函数 LEN 与 DATALENGTH的区别

标签:blog   http   ar   使用   sp   数据   div   art   log   

原文地址:http://www.cnblogs.com/hicolin/p/4126338.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!