首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >T-SQL令人惊讶的char和nchar的DATALENGTH值

T-SQL令人惊讶的char和nchar的DATALENGTH值
EN

Stack Overflow用户
提问于 2014-03-16 19:02:08
回答 1查看 1.5K关注 0票数 1
代码语言:javascript
复制
SELECT DATALENGTH('źźźź')                       -- 4
SELECT DATALENGTH(CONVERT(char, 'źźźź'))        -- 30
SELECT DATALENGTH(CONVERT(nchar, 'źźźź'))       -- 60
SELECT DATALENGTH(CONVERT(varchar, 'źźźź'))     -- 4
SELECT DATALENGTH(CONVERT(nvarchar, 'źźźź'))    -- 8

我知道char不是unicode类型,但nchar实际上是unicode类型。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-03-16 19:15:38

是的-那你有什么问题?

如果没有在CONVERT中定义CAST长度,则30字符是系统默认值。

所以这就是

代码语言:javascript
复制
SELECT DATALENGTH(CONVERT(char, 'źźźź'))  

等于

代码语言:javascript
复制
SELECT DATALENGTH(CONVERT(char(30), 'źźźź'))  

而且,由于CHAR (和NCHAR)数据类型是,所以总是将填充到它们定义的长度中,因此可以得到30个字符,从而得到30个(char)和60个(nchar)字节长度。

所有这些都很清晰,并且有很好的文档--参见有关强制转换和转换的MSDN文档

长度 指定目标数据类型长度的可选整数。默认值为30__。

当您使用可变长度字符串而不是varcharnvarchar时,您只会得到字符串中真正存储的字符数量--因此您将得到4个字符,从而得到4个和8个字节的长度。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22441409

复制
相关文章

相似问题

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