小编典典

在SQL Server中将s,t与艧,牛进行比较

sql

如果城市名称为“ ia艧i”,则不会返回任何内容:

SELECT *
  FROM City
 WHERE Name COLLATE Latin1_general_CI_AI LIKE '%iasi%' COLLATE Latin1_general_CI_AI

如果城市名称为“ ia艧i”(也请注意“ LIKE”模式中的外国人),这也不会返回任何内容:

SELECT *
  FROM City
 WHERE Name COLLATE Latin1_general_CI_AI LIKE '%ia艧i%' COLLATE Latin1_general_CI_AI

我正在使用SQL Server Management Studio2012。
我的数据库和列排序规则为“ Latin1_General_CI_AI”,列类型为nvarchar。

我该如何运作?


阅读 139

收藏
2021-04-28

共1个答案

小编典典

您指定的字符不是Latin1代码页的一部分,因此,除了之外的其他任何方式都无法对它们进行比较Latin1_General_CI_AI。实际上,我认为在给定的排序规则中,它们根本不起作用。

如果您仅使用一种归类,则只需使用正确的归类(例如,如果您的数据是土耳其语,请使用Turkish_CI_AI)。如果您的数据来自许多不同的语言,则必须使用unicode和适当的排序规则。

但是,还有另一个问题。在像罗马尼亚或土耳其语言,不是 一个重音s,而是一个完全独立的人物-看到http://collat​​ion-
charts.org/mssql/mssql.0418.1250.Romanian_CI_AI.html。与例如。这是的重音形式s

如果确实需要等于s,则可以手动替换原始字符。

另外,当您使用unicode列(nvarchar和一堆)时,请确保您还使用了unicode 文字
,即。使用N'%iasi%'而不是'%iasi%'

2021-04-28