首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SQL Server中的DATALENGTH VARCHAR

SQL Server中的DATALENGTH VARCHAR
EN

Stack Overflow用户
提问于 2015-04-23 00:45:05
回答 2查看 2.9K关注 0票数 2

根据MSDN,VARCHAR数据类型的存储大小是输入+2字节的数据的实际长度。我试图理解为什么当我运行这个查询时:

代码语言:javascript
复制
DECLARE @VARCHAR VARCHAR(40) = 'RACING CLUB DE AVELLANEDA'
SELECT DATALENGTH(@VARCHAR) AS Bytes, LEN(@VARCHAR) AS Characters;

@VARCHAR的存储大小与CHAR数据类型相同,为25,而不是27 (25+2)。

它与DATALENGTH函数有关吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-04-23 00:56:45

datalength将告诉您数据的字节数,它不包括存储中数据之前的2个字节。varchar的2字节开销用于记录字符串中的字节数(在您的示例中为25 )。

票数 5
EN

Stack Overflow用户

发布于 2015-04-23 02:12:07

DATALENGTH返回bytes used的数量

LEN返回characters used的数量

只是比较一下这些结果

代码语言:javascript
复制
DECLARE @VARCHAR VARCHAR(40) = 'RACING CLUB DE AVELLANEDA'
SELECT DATALENGTH(@VARCHAR) AS Bytes, LEN(@VARCHAR) AS Characters;

Bytes: 25 ==> As it is a variable length, returns 25    
Characters: 25
代码语言:javascript
复制
DECLARE @VARCHAR CHAR(40) = 'RACING CLUB DE AVELLANEDA'
SELECT DATALENGTH(@VARCHAR) AS Bytes, LEN(@VARCHAR) AS Characters;

Bytes: 40 ==> As it is a fixed length, returns 40
Characters: 25
代码语言:javascript
复制
DECLARE @VARCHAR NVARCHAR(40) = 'RACING CLUB DE AVELLANEDA'
SELECT DATALENGTH(@VARCHAR) AS Bytes, LEN(@VARCHAR) AS Characters;

Bytes: 50 ==> As it is a variable length, returns 25*2 = 50
Characters: 25
代码语言:javascript
复制
DECLARE @VARCHAR NCHAR(40) = 'RACING CLUB DE AVELLANEDA'
SELECT DATALENGTH(@VARCHAR) AS Bytes, LEN(@VARCHAR) AS Characters;

Bytes: 80 ==> As it is a fixed length, returns 40*2 = 80
Characters: 25

此外,还可以轻松地将+2添加到DATALENGTH中,用于VARCHAR数据类型。

代码语言:javascript
复制
DECLARE @VARCHAR VARCHAR(40) = 'RACING CLUB DE AVELLANEDA'
SELECT  DATALENGTH(@VARCHAR) AS Bytes
        ,LEN(@VARCHAR) AS Characters
        ,DATALENGTH(@VARCHAR) + 2 AS ActualUsedBytes

输出

代码语言:javascript
复制
Bytes   Characters  ActualUsedBytes
25      25          27
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29811568

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档