SQL Server中无法移除特殊单引号的技术求助
解决SQL Server中特殊单引号无法移除的问题
第一步:获取特殊字符的Unicode编码
你遇到的是扩展字符集里的特殊单引号(比如左单引号、右单引号这类变体),普通的CHAR(39)匹配不到。先定位它的具体编码:
- 找到包含特殊单引号的目标记录,用
SUBSTRING截取该字符,再通过UNICODE函数拿到编码:
SELECT UNICODE(SUBSTRING([Description], 目标字符位置, 1)) FROM 你的表名 WHERE 筛选条件 -- 比如 ID=123,精准定位目标记录
把目标字符位置换成特殊单引号在字段里的具体位置,执行后就能得到它的Unicode数值(常见特殊单引号编码:8216左单引号、8217右单引号)。
第二步:用Unicode编码精准替换
拿到编码后,用NCHAR()函数匹配该特殊字符完成替换,注意要加N前缀确保识别Unicode字符:
-- 单个特殊字符替换 UPDATE 你的表名 SET [Description] = REPLACE([Description], NCHAR(你查到的编码), '') WHERE 筛选条件 -- 一次性替换常见的几种特殊单引号(含普通单引号) UPDATE 你的表名 SET [Description] = REPLACE(REPLACE(REPLACE([Description], NCHAR(8216), ''), NCHAR(8217), ''), NCHAR(39), '') WHERE 筛选条件
操作提醒
- 执行
UPDATE前先跑SELECT测试替换结果,避免误改数据:
SELECT REPLACE([Description], NCHAR(你查到的编码), '') AS 替换后内容 FROM 你的表名 WHERE 筛选条件
- 如果字段是
NVARCHAR类型,必须用NCHAR而非CHAR,否则无法匹配Unicode特殊字符。
内容的提问来源于stack exchange,提问作者ManPressingButtons
相关产品推荐
相关产品推荐

