现在的位置: 首页 > 综合 > 正文

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

2012年06月25日 ⁄ 综合 ⁄ 共 896字 ⁄ 字号 评论关闭
代码

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返回的结果,我真是一头雾水,请高人指点。谢谢!

 

抱歉!评论已关闭.