CHAR的最大值是多少?

时间:2017-04-14 08:51:31

标签: sql sql-server

我想知道sql中的max char值是多少?我注意到在C#中这是\uFFFF,但是当我使用该值来比较一个字符串时,SQL认为它是一个空字符串。

如果重要,该表位于SQL_Latin1_General_CP1_CI_AS中。

3 个答案:

答案 0 :(得分:6)

什么是ascii ...

存在深刻的误解

ASCII是一个7位代码(0到127),其中字符是固定的

第8位第二次提供此范围(128到255)。在这个区域中,字符取决于代码页和排序规则。

CHAR视为BYTE(内存中的8位)会产生误导......

尝试此操作,均返回资本A

SELECT CHAR(65) COLLATE Latin1_General_CI_AS
SELECT CHAR(65) COLLATE Arabic_CI_AS

代码255以Latin1_General_CI_AS呈现为ÿ,阿拉伯语排序规则似乎没有可打印字符,因此是问号。

SELECT CHAR(255) COLLATE Latin1_General_CI_AS
SELECT CHAR(255) COLLATE Arabic_CI_AS

简而言之: SQL将其呈现为空字符串不正确。这取决于您的设置

答案 1 :(得分:0)

您是否清楚地说过Documentation

  

char [(n)]

     

固定长度的非Unicode字符串数据。 n定义了   字符串长度,必须是从1到 8,000 的值。存储   大小是n个字节。 char的ISO同义词是character。

答案 2 :(得分:0)

数字上,答案是255. CHAR的 potential 范围是0到255.它是为字段配置的字符编码的8位代码单元(它可能继承自表或数据库)。

255是一个有效的代码单元,是一个完整的代码点,它代表的是哪个字符,它的排序顺序(你的意思是max?)取决于整理。 (排序规则指定字符编码和排序顺序。)

哦,如果要将SQL数据类型与其他数据类型进行比较,NVARCHAR和C#的char和.NET的Char都使用UTF-16作为字符编码。