1

Products在 SQL Server 2014 Express 中有一个表,其中包含记录。

一些产品名称(记录)如下:

  • 测试产品
  • 测试术语
  • Teszt termék 2

当我执行以下查询时,一切正常:

SELECT * 
FROM Products
WHERE name LIKE 'te%'

它检索所有三个记录。但是,当我使用

SELECT * 
FROM Products
WHERE name LIKE 'tes%'

执行时,仅检索“测试产品”。当查询是

SELECT * 
FROM Products
WHERE name LIKE 'tesz%'

然后它再次工作,它获取所有以“Tesz”开头的记录。

知道问题可能是什么吗?

提前感谢您的帮助。

4

1 回答 1

2

我下载了你的备份。

数据库排序规则设置为Hungarian_CI_AS.

Sz 在匈牙利语中被视为一个字母(匈牙利字母表中的第三十个字母)。如果您不想要这种行为,那么您需要避免使用匈牙利排序规则,它应该可以工作。(我测试了所有名称结尾CI_AS的 SQL Server 2014 排序规则,唯一显示该行为的排序规则是Hungarian_CI_AS, Hungarian_100_CI_AS, SQL_Hungarian_CP1250_CI_AS

您可以通过更改列排序规则(首选)或通过向COLLATE查询添加显式子句(效率较低并且会阻塞查询,例如WHERE name LIKE 'tes%'通过索引查找来解决)来做到这一点。

您也可以考虑更改数据库排序规则,但这不会级联到在旧排序规则上创建的预先存在的表列。

于 2015-04-06T18:10:09.583 回答