1

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

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

忽略重音和大小写的 LINQ

使用 LINQ to SQL 忽略 SQL Server 中的重音符号

修改搜索以使其在 SQL Server 中不区分重音

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

问题是对某些特定代码页的重音不敏感排序规则和我在MSDN 文档中缺少 1250 代码页的重音不敏感排序规则。

我需要修改列的排序规则以使实体框架以不区分重音的方式工作

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

如何解决这个问题?

4

2 回答 2

2
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'ë' 

根据需要返回单行(显示所有比较相等)

于 2016-11-07T08:10:04.673 回答
0

好的,似乎链接 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对我有用。赫里卡!

于 2016-11-07T08:12:07.503 回答