SQL Server replace函数具有带有unicode修饰符字符的奇怪行为



我的数据中有一些半角unicode字符(特别是U+FF9F(,这些字符似乎干扰了replace函数:

select replace(convert(nvarchar(max), N'"'), N'"', N'""')

按预期返回"",但

select replace(convert(nvarchar(max), N'"゚'), N'"', N'""')

返回未受影响的输入字符串:"゚。我相信这是由于SQL Server将两个字符的序列解释为与"本身不同。

有什么方法可以让replace函数将双引号字符替换为两个吗?

编辑:这个问题与在MS SQL Server中替换特定的Unicode字符中提出的答案略有不同。这个问题是关于删除半角字符,而这个问题是有关修改半角字符旁边的字符。在这两个问题中,都需要将排序规则设置为Latin1_General_BIN

使用COLLATE Latin1_General_BIN处理Unicode字符。

SELECT REPLACE(CONVERT(nvarchar(max), N'"゚') COLLATE Latin1_General_BIN, N'"', N'""')

最新更新