如果城市名称为“ 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。
我该如何运作?
您指定的字符不是Latin1代码页的一部分,因此,除了之外的其他任何方式都无法对它们进行比较Latin1_General_CI_AI。实际上,我认为在给定的排序规则中,它们根本不起作用。
Latin1_General_CI_AI
如果您仅使用一种归类,则只需使用正确的归类(例如,如果您的数据是土耳其语,请使用Turkish_CI_AI)。如果您的数据来自许多不同的语言,则必须使用unicode和适当的排序规则。
Turkish_CI_AI
但是,还有另一个问题。在像罗马尼亚或土耳其语言,艧是 不是 一个重音s,而是一个完全独立的人物-看到http://collation- charts.org/mssql/mssql.0418.1250.Romanian_CI_AI.html。与例如。拧这是的重音形式s。
s
拧
如果确实需要艧等于s,则可以手动替换原始字符。
另外,当您使用unicode列(nvarchar和一堆)时,请确保您还使用了unicode 文字 ,即。使用N'%iasi%'而不是'%iasi%'。
N'%iasi%'
'%iasi%'