如何在SQL Server中执行1250代码页的重音不敏感比较



在stackoverflow上已经有很多关于重音不敏感搜索的问题和解决方案,但是它们都不适用于代码页1250(中欧和东欧语言)。

我如何执行一个口音不敏感的比较(e与è, , ê和ë)在SQL Server?

LINQ Where忽略重音和大小写

在SQL Server中使用LINQ to SQL忽略重音

修改SQL Server中的重音不敏感搜索

关于SQL Server (Latin1_General_CI_AS)重音不敏感的问题

问题是重音不敏感排序被绑定到某些特定的代码页,并且我在MSDN文档中缺少1250代码页的重音不敏感排序。

我需要修改列的排序,使实体框架工作在口音不敏感的方式。

例如,如果我将排序规则更改为SQL_LATIN1_GENERAL_CP1_CI_AI,则由于错误的代码页,c with accute被选择为c without accute (U+0107)。

如何解决这个问题?

SELECT *
FROM   sys.fn_helpcollations()
WHERE  COLLATIONPROPERTY(name, 'CodePage') = 1250
       AND description LIKE '%accent-insensitive%';

返回264个结果供选择。

选择第一个

SELECT N'è' COLLATE Albanian_CI_AI
UNION
SELECT N'é'
UNION
SELECT N'ê'
UNION
SELECT N'ë' 

返回所需的单行(显示所有比较相等)

OK,似乎链接MSDN文档是针对SQL server 2008的,我使用SQL server 2014,但我无法找到2014年的任何整理文档。

但解决方案是列出来自服务器的排序为我的代码页:

SELECT name, COLLATIONPROPERTY(name, 'CodePage') AS CodePage
FROM fn_helpcollations()
where COLLATIONPROPERTY(name, 'CodePage') = 1250
ORDER BY name;

我可以看到有一个未记录的整理Czech_100_CI_AI ,它适用于我。Heureka !

最新更新