这可能是我忽略的非常简单的事情,但它让我发疯。

基本要点是我在 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/

10-12 01:26