这可能是我忽略的非常简单的事情,但它让我发疯。
基本要点是我在 SQL Server 2014 中有一个非常简单的表,称为 Products,其中包含一些 ProductNames 列 (nvarchar(max))。我放入了一些测试字符串,例如
Caly
Calyd
Cali
Cal
Taly
Blical
Blacaly
我正在这个表上执行一个非常简单的 SELECT :
SELECT *
FROM Products
WHERE ProductName LIKE '%Cal%'
事情就是这样,我只得到这些结果
Cali
Cal
Blical
注意缺少的 Caly 和 Blacaly 。但是如果我搜索 '%Caly%',我会得到预期的结果:
Caly
Calyd
Blacaly
或者,如果我按预期再次搜索“%Ca%”:
Caly
Calyd
Cali
Cal
Blical
Blacaly
所以真的,什么给了,我在这里完全不知所措。 “Cal”是某种奇怪的复活节彩蛋词吗?侏儒是在吃我的结果,还是什么?
(顺便说一句,我在 MySQL 中尝试了同样的事情,作为测试,它在那里按预期工作。)
最佳答案
您正在使用 Hungarian_CI_AS 归类。在 Hungarian alphabet 有向图中 'ly' 是一个单独的字母。
例如,“Caly”是一个 3 个字母的单词 - 'C'、'a'、'ly'。
关于SQL Server LIKE 子句问题,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33034805/