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

如何在T-SQL中用正则表达式替换Riched20匹配内容?

在T-SQL中替换所有Riched20 ...}格式的内容

方案1:SQL Server 2017及以上版本(支持原生正则替换)

SQL Server 2017及后续版本提供了REGEXP_REPLACE函数,可直接用正则表达式匹配并替换目标内容。

如果要匹配**Riched20开头、任意内容直到第一个}**的格式,使用非贪婪模式的正则:

SET @data = REGEXP_REPLACE(@data, 'Riched20.*?}', '', 1, 0, '');
  • Riched20:匹配固定前缀
  • .*?:非贪婪匹配任意字符(避免一次性匹配到多个})
  • }:匹配结尾的闭合符号
  • 后续参数1,0,''表示从第1个字符开始匹配、替换所有匹配项,不指定额外匹配选项(默认不区分大小写,如需区分可传入'c')

如果需要更精确匹配版本号格式(比如仅匹配Riched20 数字.数字}),可调整正则:

SET @data = REGEXP_REPLACE(@data, 'Riched20 \d+\.\d+}', '', 1, 0, '');
  • \d+:匹配1个或多个数字
  • \.:匹配点号(转义后的特殊字符)

方案2:SQL Server 2016及更早版本(无原生正则支持)

对于不支持REGEXP_REPLACE的旧版本,可通过PATINDEX结合循环实现替换:

WHILE PATINDEX('%Riched20%}', @data) > 0
BEGIN
    -- 找到匹配内容的起始位置
    DECLARE @startPos INT = PATINDEX('%Riched20%}', @data);
    -- 找到对应结尾的`}`位置
    DECLARE @endPos INT = CHARINDEX('}', @data, @startPos);
    
    -- 替换掉匹配的内容
    SET @data = STUFF(@data, @startPos, @endPos - @startPos + 1, '');
END

这个逻辑会循环查找所有Riched20...}格式的内容,逐个替换为空字符串,直到没有匹配项为止。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 19:31:04