209 数字是 Ñ 的 ACP 代码值 带波浪号的拉丁文大写字母 N 适用于 ACP1250、@987654329 中的任何一个@、ACP1254、ACP1257 和 ACP1258 encodings(见下文补充)。
阅读 MSDN 参考(适用于:SQL Server,从 2008 年开始):
ASCII (Transact-SQL) 返回ASCII码值
字符表达式的最左边的字符。
这有点简洁,但它是否简洁精确?我不这么认为:ASCII 最初基于英文字母表,将 128 指定字符编码为 七位 整数,如@987654323 所示@。然而,ASCII('Ñ') 返回的 209 数字显然是一个 八位 整数。
其实,ASCII函数返回一个字符表达式最左边字符的ACP码值(见ACP: Acronym for the Windows (ANSI) code page in use。)
为了证明,让我们在 SQL Server (Transact-SQL) 中使用下一个效果:the ASCII function is the opposite of the CHAR function。 MSDN 参考对此做了更多说明:
CHAR (Transact-SQL) 将 int ASCII 码 转换为字符。
语法
CHAR ( integer_expression )
参数
integer_expression 是一个从 0 到 255 的整数。 NULL 是
如果整数表达式不在此范围内,则返回。
顺便说一句,所有这些差异都源于臭名昭著的术语混淆,即大量滥用(互换)诸如ASCII、ANSI、CP 之类的术语,甚至诸如UNICODE、UTF-16、UCS-2 等术语。等等
补充:代码209的Windows ANSI字符表(下表来自我的小.bat脚本):
ACP Hex codepoint #Description
--- --- --------- ------------
CP1250 0xD1 0x0143 #LATIN CAPITAL LETTER N WITH ACUTE
CP1251 0xD1 0x0421 #CYRILLIC CAPITAL LETTER ES
CP1252 0xD1 0x00D1 #LATIN CAPITAL LETTER N WITH TILDE
CP1253 0xD1 0x03A1 #GREEK CAPITAL LETTER RHO
CP1254 0xD1 0x00D1 #LATIN CAPITAL LETTER N WITH TILDE
CP1255 0xD1 0x05C1 #HEBREW POINT SHIN DOT
CP1256 0xD1 0x0631 #ARABIC LETTER REH
CP1257 0xD1 0x0143 #LATIN CAPITAL LETTER N WITH ACUTE
CP1258 0xD1 0x00D1 #LATIN CAPITAL LETTER N WITH TILDE