You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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 + '%'
*/

关键注意事项

  1. 先验证再更新:一定要先通过SELECT语句确认替换结果符合预期,避免误修改数据。
  2. 添加WHERE条件:限制只处理包含错误格式的行,避免全表扫描和不必要的更新。

内容的提问来源于stack exchange,提问作者Daniele Borio

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.31 00:21:26