SQL Server批量替换字段中单引号为双单引号的正确脚本语法求助
SQL Server 批量修正行内公式中的单引号语法
要批量替换字段中ISNULL函数里的错误单引号,核心是掌握SQL Server中单引号的转义规则:字符串常量里的单个单引号必须用两个连续单引号表示,这样SQL才能正确识别为一个实际的单引号。
正确的替换脚本(方法一:直接转义单引号)
DECLARE @a VARCHAR(100) DECLARE @b VARCHAR(100) -- 定义要匹配的错误字符串:SUNNY,' SET @a = 'SUNNY,'''; -- 定义要替换成的正确字符串:SUNNY,'' SET @b = 'SUNNY,'''''; -- 先执行SELECT验证替换结果,确认无误后再执行UPDATE SELECT XYZ AS 原公式内容, REPLACE(XYZ, @a, @b) AS 修正后内容 FROM A WHERE XYZ LIKE '%ISNULL(SUNNY,''%' -- 确认正确后执行更新 /* UPDATE A SET A.XYZ = REPLACE(A.XYZ, @a, @b) WHERE XYZ LIKE '%ISNULL(SUNNY,''%' */
更直观的写法(方法二:用CHAR(39)表示单引号)
如果觉得手动写多个单引号容易混乱,可以用CHAR(39)(单引号的ASCII码)来构造字符串,可读性更强:
DECLARE @singleQuote CHAR(1) = CHAR(39); DECLARE @a VARCHAR(100) = 'SUNNY,' + @singleQuote; DECLARE @b VARCHAR(100) = 'SUNNY,' + @singleQuote + @singleQuote; -- 先验证 SELECT XYZ AS 原公式内容, REPLACE(XYZ, @a, @b) AS 修正后内容 FROM A WHERE XYZ LIKE '%ISNULL(SUNNY,' + @singleQuote + '%' -- 再更新 /* UPDATE A SET A.XYZ = REPLACE(A.XYZ, @a, @b) WHERE XYZ LIKE '%ISNULL(SUNNY,' + @singleQuote + '%' */
关键注意事项
- 先验证再更新:一定要先通过
SELECT语句确认替换结果符合预期,避免误修改数据。 - 添加WHERE条件:限制只处理包含错误格式的行,避免全表扫描和不必要的更新。
内容的提问来源于stack exchange,提问作者Daniele Borio
相关产品推荐
相关产品推荐

