像sql server中的查询一样简单返回没有结果

时间:2012-01-25 13:49:44

标签: sql sql-server

我在sql server上有一个简单的LIKE查询,当前导字符与第一个字符相同时,不会返回结果...

数据库故事包含一行,其字段为“姓氏”,值为“Aalesund”

select * 
from table 
where LastName like 'A%' -- returns no results

如果我将'Lastname'字段更改为包含'Alesund',则完全相同的查询将返回正确的行。

有什么想法吗?

的Stig

2 个答案:

答案 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 'Å%'