我在sql server上有一个简单的LIKE查询,当前导字符与第一个字符相同时,不会返回结果...
数据库故事包含一行,其字段为“姓氏”,值为“Aalesund”
select *
from table
where LastName like 'A%' -- returns no results
如果我将'Lastname'字段更改为包含'Alesund',则完全相同的查询将返回正确的行。
有什么想法吗?
的Stig
答案 0 :(得分:10)
在丹麦语/挪威语的Sql服务器整理中,“aa”被认为是å的“同义词”,因为这就是20世纪40年代之前这封信是在丹麦写的。这也意味着“aa”被认为是排序时字母表的最后一个字母。
我不知道这种行为在挪威语环境中是否有意义,但我认为整理在Sql server 2012中被分成两部分,可能会解决它。
更新:根据维基百科,在挪威使用“Aa”作为“Å”类似于丹麦的用法:几十年来官方组织对这些语言进行标准化已废除“Aa”,但一些城镇拒绝因历史原因而改名,“Aa”在姓氏中也很常见。
基于此,我会说在搜索LIKE“A%”时未能找到“Aalesund”是挪威本地化应用程序中最正确的行为。如果您不使用丹麦语/挪威语的排序规则来改变这一点,您应该知道它会改变其他属性,例如上面提到的特殊字母的排序。
名为Danish_Norwegian _...的许多不同的校对将无法帮助您AFAIK。它们指定了对案例,口音,字符宽度和假名类型的敏感性的行为(后者仅与日语相关,我相信)。 “Å”不被视为重音“A”,而是一个独特的字母。排序规则的命名约定说明在this MSDN article。
更新2:令人惊讶的是,似乎整理Norwegian_100_CI_AI做了你想要的。也许丹麦和挪威的用法毕竟不同......
答案 1 :(得分:1)
该名称有时拼写为“Ålesund”A上的小圆圈在某些字体中非常小。当您尝试使用全名查询时,可能会无意中复制/粘贴“Ålesund”。尝试
select * from table where LastName like 'Å%'