【发布时间】:2016-12-12 05:20:15
【问题描述】:
我的数据中有一些半角 unicode 字符(特别是 U+FF9F),这似乎干扰了 replace 函数:
select replace(convert(nvarchar(max), N'"'), N'"', N'""')
按预期返回"",但是
select replace(convert(nvarchar(max), N'"゚'), N'"', N'""')
返回不受影响的输入字符串:"゚。我相信这是由于 SQL Server 将两个字符序列解释为与 " 本身不同。
有没有办法让replace 函数用两个替换那个双引号字符?
编辑:这个问题与Replacing a specific Unicode Character in MS SQL Server 中提出的答案略有不同。这个问题是关于删除半角字符,而这个问题是关于修改半角字符旁边的字符。在这两个问题中,都需要将排序规则设置为Latin1_General_BIN
【问题讨论】:
-
select replace(convert(nvarchar(max), N'"゚') COLLATE Latin1_General_BIN, N'"', N'""')将解决该链接中所述的问题 -
我运行它在两种情况下都会得到两个双引号。这对我来说似乎是正确的。
-
@GordonLinoff - 可能您的数据库设置为默认排序规则为
COLLATE Latin1_General_BIN? -
谢谢!排序规则成功了
标签: sql-server unicode utf-16