Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sql-server-2005/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 2005 如何在SQL Server中执行不区分重音的比较(e与è、è、è和ë)?_Sql Server 2005_Tsql_Collation - Fatal编程技术网

Sql server 2005 如何在SQL Server中执行不区分重音的比较(e与è、è、è和ë)?

Sql server 2005 如何在SQL Server中执行不区分重音的比较(e与è、è、è和ë)?,sql-server-2005,tsql,collation,Sql Server 2005,Tsql,Collation,我想比较SQL中的两个varchar,一个类似于Cafe,另一个Café在SQL中有一种方法可以比较这两个值。例如: SELECT * FROM Venue WHERE Name Like '%cafe%' 因此,如果有一个名为Big Bobs CaféExtraordinaire的场馆,它将被包括在结果集中?通过对您的选择应用特定的不区分重音: SELECT * FROM Venue WHERE Name COLLATE Latin1_General_CI_AI Like '%cafe%

我想比较SQL中的两个varchar,一个类似于Cafe,另一个Café在SQL中有一种方法可以比较这两个值。例如:

SELECT *
FROM Venue
WHERE Name Like '%cafe%'

因此,如果有一个名为Big Bobs CaféExtraordinaire的场馆,它将被包括在结果集中?

通过对您的选择应用特定的不区分重音:

SELECT * 
FROM Venue 
WHERE Name COLLATE Latin1_General_CI_AI Like '%cafe%' COLLATE Latin1_General_CI_AI

CI代表不区分大小写,AI代表不区分重音

强制使用不区分重音的

如果要与表变量或temp table varchar列进行比较,还需要确保双方具有相同的排序规则,以避免错误或进一步的强制

而且因为常量值将具有数据库更新的排序规则:仅适用于局部变量,不适用于常量nope,甚至不适用于nope

SELECT *
FROM Venue
WHERE
   Name COLLATE Latin1_general_CI_AI Like '%cafe%' COLLATE Latin1_general_CI_AI

通过使用Latin1_general_CI_AI可以进行区分重音和不区分重音的搜索

这里AI表示不区分重音,而表示区分重音 也就是说,咖啡馆和咖啡馆是一样的,如果不区分重音的话

在下面的查询中,Latin1_general_CI_AI可以分解为以下部分

latin1使服务器使用字符集latin 1(基本上是ascii)处理字符串

CI指定不区分大小写,因此ABC等于ABC

AI指定不区分重音,因此'u'等于'u'。 您的查询应如下所示:

SELECT * FROM Venue WHERE Name COLLATE Latin1_general_CI_AI Like '%cafe%' COLLATE Latin1_general_CI_AI
 Id  name
 1  Café
 2  Cafe
预期结果如下:

SELECT * FROM Venue WHERE Name COLLATE Latin1_general_CI_AI Like '%cafe%' COLLATE Latin1_general_CI_AI
 Id  name
 1  Café
 2  Cafe

啊,这就是结尾那些愚蠢的角色的意思。我知道这很愚蠢,但这帮了大忙。不知何故,对我来说,DB排序似乎总是带来大脑迷雾。在这种情况下,您不需要提供两次排序:从名称为“%cafe%”的地点选择*排序拉丁1\u general\u CI_AI@PollusB:是的,我的badI实现了这个答案,搜索不区分重音,但副作用是,我在select查询中缺少了一些重音。例如,带有急性U+0107的c。在列属性中,我看到SQL\u Latin1\u General\u CP1\u CI\u AI排序规则。我使用以下语句更改了排序规则:ALTER TABLE mytable ALTER COLUMN description varchar48 COLLATE SQL\u Latin1\u General\u CP1\u CI\u AI。它以前是捷克语的。如果我在回答中使用查询而不更改列的排序规则,则它在实体框架中不起作用。