CHAR的最大值是多少?

use*_*943 0 sql sql-server

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

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

Shn*_*ugo 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
Run Code Online (Sandbox Code Playgroud)

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

SELECT CHAR(255) COLLATE Latin1_General_CI_AS
SELECT CHAR(255) COLLATE Arabic_CI_AS
Run Code Online (Sandbox Code Playgroud)

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