sql - sql server中的简单like查询没有返回结果

标签 sql sql-server

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

数据库故事包含一行,其中包含字段“Lastname”和值“Aalesund”

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

如果我将“姓氏”字段更改为包含“奥勒松”,则完全相同的查询将返回正确的行。

有什么想法吗?

斯蒂格

最佳答案

在 Sql 服务器的丹麦语/挪威语排序规则中,“aa”被视为 å 的“同义词”,因为这就是 1940 年代之前丹麦这封信的书写方式。这也意味着排序时“aa”被视为字母表的最后一个字母。

我不知道这种行为在挪威上下文中是否有意义,但我认为排序规则在 Sql server 2012 中被分成两部分,也许这会解决它。

更新:根据维基百科,挪威将“Aa”用作“Å”与丹麦语的用法类似:“Aa”已被标准化语言的官方组织废除了数十年,但一些城镇拒绝这样做由于历史原因改名,“Aa”在姓氏中也仍然很常见。

基于此,我想说,在搜索 LIKE“A%”时找不到“Aalesund”是挪威本地化应用程序中最正确的行为。如果您不使用丹麦/挪威排序规则来更改此设置,您应该意识到它将更改其他属性,例如特殊字母的排序,如上所述。

许多名为Danish_Norwegian_...的不同排序规则不会对您有帮助。它们指定了对大小写、重音、字符宽度和假名类型敏感度的行为(我相信后者仅与日语相关)。 “Å”不被视为带重音的“A”,而是一个不同的字母。排序规则命名约定的描述位于this MSDN article中。 .

更新2:令人惊讶的是,排序规则Norwegian_100_CI_AI 似乎符合您的要求。也许丹麦和挪威的用法毕竟不同......

关于sql - sql server中的简单like查询没有返回结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9003764/

相关文章:

sql-server - 使用 sqoop 将表从 Windows SQL Server 2012 导入到 hadoop

python - 当参数有时可以为NULL时如何参数化SQL查询?

java - 使用Java获取MS SQL Server中特定数据库中所有表的表名

sql - Presto 查询 : Find the key with maximum value in a map

sql - 是否可以仅使用 Insert 和 Select 语句在 Redshift 中引发可序列化隔离冲突?

sql - INSERT ON CONFLICT DO NOTHING 和 SELECT 之间的竞争条件

mysql - 如何以不同的方式排序

sql - 如何动态选择在存储过程中选择哪个表(具有相同架构)

sql - 为 BigQuery 中的值的分位数创建列

Javascript 如何检查多个等待异步 mssql DB 请求结果是否有错误?