我正在寻找比较SQL中的两个varchar,一个类似Cafe
,而另一个Café
在SQL中有一种方法可以比较两个值。例如:
SELECT *
FROM Venue
WHERE Name Like '%cafe%'
那么,如果有一个名称为场地的场所,Big Bobs Café Extraordinaire
它将被包含在结果集中吗?
我正在寻找比较SQL中的两个varchar,一个类似Cafe
,而另一个Café
在SQL中有一种方法可以比较两个值。例如:
SELECT *
FROM Venue
WHERE Name Like '%cafe%'
那么,如果有一个名称为场地的场所,Big Bobs Café Extraordinaire
它将被包含在结果集中吗?
Answers:
强制为重音不敏感排序规则
如果要与表变量或临时表varchar列进行比较,还需要确保双方具有相同的排序规则以避免错误或进一步的强制性
并且因为常量值将具有数据库的整理规则更新:仅用于局部变量,不用于常量nope,甚至不
SELECT *
FROM Venue
WHERE
Name COLLATE Latin1_general_CI_AI Like '%cafe%' COLLATE Latin1_general_CI_AI
通过将特定的重音不敏感排序规则应用于您的选择:
SELECT *
FROM Venue
WHERE Name COLLATE Latin1_General_CI_AI Like '%cafe%' COLLATE Latin1_General_CI_AI
CI代表“不区分大小写”,AI代表“不区分大小写”。
通过使用可以进行口音敏感和口音不敏感搜索 Latin1_general_CI_AI
这里AI
是针对重音不敏感的,AS
对于重音敏感的,即,如果对重音不敏感,则Café和Cafe相同。
在下面的查询中Latin1_general_CI_AI
可以分为以下几部分。
latin1
使服务器使用字符集拉丁文1处理字符串,基本上是ascii。
CI指定不区分大小写,因此“ ABC”等于“ abc”。
您的查询应如下所示:
SELECT * FROM Venue WHERE Name COLLATE Latin1_general_CI_AI Like '%cafe%' COLLATE Latin1_general_CI_AI
预期结果如下:
Id name
1 Café
2 Cafe