我在SQL Server 2014 Express中有一个Products
表,其中包含记录。
一些产品名称(记录)如下:
当我执行以下查询时,一切正常:
SELECT *
FROM Products
WHERE name LIKE 'te%'
它检索所有三条记录。但是,当我使用
时SELECT *
FROM Products
WHERE name LIKE 'tes%'
执行,仅检索“测试产品”。当查询
时SELECT *
FROM Products
WHERE name LIKE 'tesz%'
然后它再次工作,它获取以“Tesz”开头的所有记录。
知道问题可能是什么?
提前感谢您的帮助。
答案 0 :(得分:2)
我下载了你的备份。
数据库排序规则设置为Hungarian_CI_AS
。
Sz在匈牙利语中被视为一封信(the thirty-second letter of the Hungarian alphabet)。如果您不想要这种行为,那么您需要避免使用匈牙利语排序规则,它应该可以正常运行。 (我测试了名称结尾为CI_AS
的所有SQL Server 2014排序规则,并且唯一显示行为的排名是Hungarian_CI_AS
,Hungarian_100_CI_AS
,SQL_Hungarian_CP1250_CI_AS
)
您可以通过更改列排序规则(首选)或向查询添加显式COLLATE
子句来实现此目的(效率较低,并将阻止通过索引查找解析WHERE name LIKE 'tes%'
等查询)。
您可能还会考虑更改数据库排序规则,但这不会级联到旧排序规则中创建的预先存在的表列。