博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
SQL Server 函数 LEN 与 DATALENGTH的区别
阅读量:6238 次
发布时间:2019-06-22

本文共 848 字,大约阅读时间需要 2 分钟。

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

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,即值的位数。

你可能感兴趣的文章
Centos中配置环境变量
查看>>
mysql中判断记录是否存在方法比较【转】
查看>>
HBase 列族的概念
查看>>
hdu2036
查看>>
基于模板匹配的马赛克检验
查看>>
Database4.exe用来导入excel
查看>>
Unable to preventDefault inside passive event listener
查看>>
java中string和int互相转化 (转)
查看>>
[LUOGU] P1220 关路灯
查看>>
【转】在控制台、WinForm项目中的嵌入mdf文件的烦恼
查看>>
【转】C51中断函数的写法
查看>>
django无法加载admin的静态内容的问题(Centos7+Nginx+uwsgi环境下)
查看>>
windows 2008 启用.NET Framework 3.5
查看>>
Linux -- Ubuntu搭建java开发环境
查看>>
MVC视图中Html常见的辅助方法
查看>>
分享一下刚刚HP电话面试。。。。。。。。我估计我挂了,不过还是要来分享一下...
查看>>
PT 转 PX
查看>>
平凡世界里的万千思绪
查看>>
(二)java环境搭建
查看>>
深入推荐引擎相关算法 - 协同过滤2
查看>>