【发布时间】:2014-12-18 12:39:28
【问题描述】:
我正在尝试编写一个函数,将罗马尼亚变音字母 (ĂÂÎȘȚ) 替换为对应的拉丁字母(分别为 AAIST)。
SQL Server 的replace 函数可以处理Ă、Â 和Î。
Ș 和 Ț 似乎有一个奇怪的问题:只有在字符串开头找到它们时才会替换它们。
对于example:
select replace(N'Ș', N'Ș', N'-')
-- '-' # OK
select replace(N'ȘA', N'Ș', N'-')
-- '-A' # OK
select replace(N'AȘ', N'Ș', N'-')
-- 'AȘ' # WHAT??
select replace(N'ȘAȘ', N'Ș', N'-')
-- '-AȘ' # WHAT??
我设法在 SQL Sever 2008 R2 和 SQL Server 2012 上重现了这种行为。
这些看似奇怪的结果有什么解释吗?或者它可能只是一个错误?
我的默认数据库排序规则是SQL_Latin1_General_CP1_CI_AS。
【问题讨论】:
标签: sql-server replace sql-server-2008-r2 sql-server-2012 diacritics