在SQL Server 2012中,我有一个带有nvarchar列的表,其列表为Latin1_General_100_CI_AS_ SC,它应该支持unicode代理项对字符或补充字符.
当我运行此查询时:
select KeyValue from terms where KeyValue = N'?'
Run Code Online (Sandbox Code Playgroud)
(上面是一个Unicode SC)
上面是一个卷曲循环字符,代码为10160(x27B0)
结果是数百个不同的单个字符条目,即使它们都有不同的UTF-16代码点.这是归因于整理吗?为什么没有完全匹配?
编辑:我现在认为这是由于整理.在UTF-16范围内似乎有一组"未定义"字符,超过1733个字符,并且通过此排序规则将它们视为相同.虽然代码高于65535的字符被视为唯一,但这些查询返回完全匹配.
以下两个查询有不同的结果:
select KeyValue from terms where KeyValue = N'?'
Run Code Online (Sandbox Code Playgroud)
返回3行:π和π和ᴨ
select KeyValue from terms where KeyValue LIKE N'?'
Run Code Online (Sandbox Code Playgroud)
返回2行:π和π
这是为什么?
这是最奇怪的.这个查询:
select KeyValue from terms where KeyValue like N'?%'
Run Code Online (Sandbox Code Playgroud)
返回表中的ALMOST ALL记录,其中包含许多多字符常规拉丁字符集术语,如"8w"或"apple".没有退回的人中有90%是以"æ"开头的.怎么了?
注意:只是为了给出一些上下文,这些都是维基百科的文章标题,而不是随机字符串.