我想知道sql中的max char值是多少?我注意到在C#中这是\uFFFF
,但是当我使用该值来比较一个字符串时,SQL认为它是一个空字符串。
如果重要,该表位于SQL_Latin1_General_CP1_CI_AS中。
答案 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作为字符编码。