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

如何通过SQL循环移除TempTable中AdditionalData列的尖括号标签内容?

解决SQL中批量移除所有尖括号及内部内容的问题

针对你的需求,要批量移除TempTable表中AdditionalData列里所有<...>格式的标签内容,可以通过WHILE循环+字符串函数实现,完整代码如下:

-- 循环替换所有<...>格式的标签
WHILE EXISTS (SELECT 1 FROM TempTable WHERE PATINDEX('%<%>%', AdditionalData) > 0)
BEGIN
    UPDATE TempTable
    SET AdditionalData = STUFF(
        AdditionalData,
        PATINDEX('<%>', AdditionalData), -- 定位第一个<的起始位置
        CHARINDEX('>', AdditionalData) - PATINDEX('<%>', AdditionalData) + 1, -- 计算需替换的完整长度(包含<和>)
        '' -- 替换为空字符串
    )
    WHERE PATINDEX('%<%>%', AdditionalData) > 0 -- 仅处理仍含标签的行
END

-- 处理替换后可能出现的连续空格,统一为单个空格并去除首尾空格
UPDATE TempTable
SET AdditionalData = LTRIM(RTRIM(REPLACE(REPLACE(REPLACE(AdditionalData, ' ', '^'), '^ ', ''), '^', ' ')))

代码说明:

  • WHILE循环:通过EXISTS判断表中是否还有包含<...>的行,只要存在就重复执行替换,直到所有行的标签都被清理完毕。
  • STUFF函数:每次精准定位第一个<的位置,计算从<到对应>的总长度(需+1才能包含末尾的>),将这段标签内容替换为空。
  • 空格处理:标签直接相邻时,替换后文本会连在一起(比如</Field22101><NetMiles>会变成Zachary, LA23),嵌套REPLACE可以把连续空格转成单个,再用LTRIM/RTRIM去除首尾多余空格,得到符合要求的分隔效果。

如果你的表用tAddlData列存储结果(而非直接修改原列),只需把代码中的AdditionalData替换为tAddlData即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 15:36:28