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

如何在SQL Server中将长字符串内反引号子串的空格替换为下划线

SQL Server 2019 反引号内空格替换方案

实现逻辑

按反引号 ` 拆分目标字符串,仅对成对反引号包裹的内容执行空格转下划线操作,其余位置的空格保持不变。利用 SQL Server 2019 原生支持的 OPENJSON 保证拆分顺序,STRING_AGG 完成结果拼接,可兼容 VARCHAR(MAX) 类型的超长字符串。

单变量测试代码

DECLARE @InputStr VARCHAR(MAX) = '`the night is dark` as A , `the day is shining` as B , `wind moves but breeze flows` as C ';

SELECT @InputStr = STRING_AGG(
    CASE WHEN [key] % 2 = 1 THEN REPLACE(value, ' ', '_') ELSE value END,
    '`'
)
FROM OPENJSON('["' + REPLACE(STRING_ESCAPE(@InputStr, 'json'), '`', '","') + '"]');

-- 输出处理后结果
SELECT @InputStr AS OutputStr;

运行后输出结果完全匹配需求:

'`the_night_is_dark` as A , `the_day_is_shining` as B , `wind_moves_but_breeze_flows` as C '

表字段批量处理代码

假设你的表名为YourTable,主键字段为ID,待处理字段为Content,批量处理写法如下:

SELECT 
    t.ID,
    processed.Content AS ProcessedContent
FROM YourTable t
CROSS APPLY (
    SELECT STRING_AGG(
        CASE WHEN [key] % 2 = 1 THEN REPLACE(value, ' ', '_') ELSE value END,
        '`'
    ) AS Content
    FROM OPENJSON('["' + REPLACE(STRING_ESCAPE(t.Content, 'json'), '`', '","') + '"]')
) processed

注意事项

  • 逻辑自动兼容存在未闭合反引号的场景,未闭合反引号后的内容不会被误替换
  • STRING_ESCAPE 会自动转义原字符串中的特殊字符,避免JSON解析报错

内容的提问来源于stack exchange,提问作者Ankit Vohra

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 11:24:04