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

Sql server SQL Server replace函数具有带有unicode修饰符字符的奇数行为,sql-server,unicode,utf-16,Sql Server,Unicode,Utf 16,我的数据中有一些半角unicode字符(特别是U+FF9F),这似乎干扰了replace函数: select replace(convert(nvarchar(max), N'"'), N'"', N'""') 按预期返回”,但 select replace(convert(nvarchar(max), N'"゚'), N'"', N'""') 返回未受影响的输入字符串:“゚。我认为这是由于SQL Server将两个字符序列解释为与“本身不同 有没有办法让replace函数将双引号字符替换为

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

select replace(convert(nvarchar(max), N'"'), N'"', N'""')
按预期返回
,但

select replace(convert(nvarchar(max), N'"゚'), N'"', N'""')
返回未受影响的输入字符串:
“゚。我认为这是由于SQL Server将两个字符序列解释为与
本身不同

有没有办法让
replace
函数将双引号字符替换为两个

编辑:此问题与中提出的答案略有不同。这个问题是关于删除半宽字符,而这个问题是关于修改半宽字符旁边的字符。在这两个问题中,都需要将排序规则设置为
Latin1\u General\u BIN

用于处理Unicode字符

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

select replace(转换(nvarchar(最大),N')的可能重复゚') COLLATE Latin1_General_BIN,N'',N'')
将解决该链接中所述的问题。我运行该链接时,两种情况下都会得到两个双引号。我认为这似乎是正确的。@GordonLinoff-可能是您的数据库设置了默认排序规则为
COLLATE Latin1_General_BIN
?谢谢!排序成功了