我的数据中有一些半角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'""')