只为成功找方向,不为失败找借口

每天都不能停止前进的脚步
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

SQL Server中DataLength()与Len()的区别

Posted on 2011-01-27 17:27  冰碟  阅读(1835)  评论(4编辑  收藏  举报
代码
DECLARE @a NVARCHAR(20),
        
@b NVARCHAR(20),
        
@c NVARCHAR(20)

SET @a = 'abc'
SET @b = ' abc'
SET @c = 'abc '


SELECT LEN(@aAS [LEN],DATALENGTH(@aAS [DATALENGTH] --3,6
SELECT LEN(@bAS [LEN],DATALENGTH(@bAS [DATALENGTH] --4,8
SELECT LEN(@cAS [LEN],DATALENGTH(@cAS [DATALENGTH] --3,8

 

Len()返回指定字符串表达式的字符数,其中不包含尾随空格

DataLength() 返回用于表示任何表达式的字节数。

 

但是我还发现了以下的一些问题:

 

代码
DECLARE @d VARCHAR(20),--可变长度,非 Unicode 字符数据。n 的取值范围为 1 至 8,000。max 指示最大存储大小是 2^31-1 个字节。存储大小是输入数据的实际长度加 2 个字节。所输入数据的长度可以为 0 个字符
        
@e NCHAR(20),--n 个字符的固定长度的 Unicode 字符数据。n 值必须在 1 到 4,000 之间(含)。存储大小为两倍 n 字节。
        
@f CHAR(20)--固定长度,非 Unicode 字符数据,长度为 n 个字节。n 的取值范围为 1 至 8,000,存储大小是 n 个字节

SET @d = 'abc'
SET @e = 'abc'
SET @f = 'abc'

SELECT LEN(@dAS [LEN],DATALENGTH(@dAS [DATALENGTH] --3,3
SELECT LEN(@eAS [LEN],DATALENGTH(@eAS [DATALENGTH] --3,40
SELECT LEN(@fAS [LEN],DATALENGTH(@fAS [DATALENGTH] --3,20

 

对于这三种类型,DataLength返回的结果,我真是一头雾水,请高人指点。谢谢!