gpt4 book ai didi

sql - 在 SQL Server 中将 s、t 与 ş、ţ 进行比较

转载 作者:行者123 更新时间:2023-12-01 12:43:10 24 4
gpt4 key购买 nike

我关注了这篇文章 How do I perform an accent insensitive compare (e with è, é, ê and ë) in SQL Server?但它对“ş”、“ţ”字符没有帮助。

如果城市名称是“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 Studio 2012。
我的数据库和列排序规则是“Latin1_General_CI_AI”,列类型是 nvarchar。

我怎样才能让它发挥作用?

最佳答案

您指定的字符不是 Latin1 代码页的一部分,因此除了 Latin1_General_CI_AI 中的序号外,不能以任何其他方式比较它们。事实上,我假设它们在给定的排序规则中根本不起作用。

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

但是,还有一个问题。在罗马尼亚语或土耳其语等语言中,ş 不是带重音符号的 s,而是一个完全独立的字符 - 参见 http://collation-charts.org/mssql/mssql.0418.1250.Romanian_CI_AI.html .与例如对比。 šs 的重音形式。

如果你真的需要 ş 等于 s,你已经手动替换了原来的字符。

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

关于sql - 在 SQL Server 中将 s、t 与 ş、ţ 进行比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22409462/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com