替换MS SQL Server中的特定Unicode字符

时间:2014-06-13 04:33:19

标签: sql-server replace unicode-string

我正在使用MS SQL Server Express 2012.

我在网格结果中删除unicode字符U+02CC(十进制:716)时遇到问题。原文是'λeˌβár'。

我这样试过,它不起作用:

SELECT ColumnTextWithUnicode, REPLACE(ColumnTextWithUnicode , 'ˌ','') 
FROM TableName

该列具有Latin1_General_CI_AS排序规则,数据类型为nvarchar。我尝试将整理更改为二进制文件,但也没有成功:

SELECT ColumnTextWithUnicode, REPLACE(ColumnTextWithUnicode collate Latin1_General_BIN, 'ˌ' collate Latin1_General_BIN,'') 
FROM  TableName

甚至使用NChar()函数,如:

SELECT ColumnTextWithUnicode, REPLACE(ColumnTextWithUnicode , NCHAR(716),'') 
FROM TableName

所有三个结果都是'λeˌβár'。

但是,如果我将列转换为varchar,如:

SELECT ColumnTextWithUnicode, REPLACE(CAST(ColumnTextWithUnicode as varchar(100)), 'ˌ','') 
FROM TableName

结果变为'eßár',删除第一个字符和'ˌ'。

任何想法只删除'ˌ'?

2 个答案:

答案 0 :(得分:6)

你只需要在字符串模式之前放置N(如果你想查找unicode字符):

SELECT REPLACE (N'λeˌβár' COLLATE Latin1_General_BIN, N'ˌ', '')

答案 1 :(得分:-1)

当我们批量插入从txt到sql的地址时,通过获取U + FFFD-REPLACEMENT CHARACTER,可以通过以下选择查询来正常工作。

select Address, REPLACE(Address COLLATE Latin1_General_BIN,N'�',' ')  from #Temp