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

SQL使用STUFF函数删除逗号分隔字符串中指定Title:Value键值对

解决方案

核心思路是先定位RemoveTitle:的起始位置,再查找该位置之后第一个逗号的下标,通过两个下标差值计算需要STUFF删除的长度即可。

长度计算逻辑

  • 用CHARINDEX(@StartSubString, 列名)拿到目标键值对的起始位置
  • 用CHARINDEX(',', 列名, 起始位置)查找目标键值对之后第一个逗号的位置
  • 如果能找到逗号,删除长度为「逗号位置 - 起始位置 + 2」(加2是为了同时删掉逗号和后面的分隔空格,避免残留多余符号)
  • 如果找不到逗号说明目标键在字符串末尾,删除长度为「字符串总长度 - 起始位置 +1」

完整代码示例

DECLARE @TargetKey VARCHAR(100) = 'RemoveTitle:'

SELECT 
    -- 不存在目标键时直接返回原字符串
    CASE WHEN CHARINDEX(@TargetKey, columnName) = 0 THEN columnName
    ELSE STUFF(
        columnName,
        CHARINDEX(@TargetKey, columnName),
        CASE 
            WHEN CHARINDEX(',', columnName, CHARINDEX(@TargetKey, columnName)) > 0 
            THEN CHARINDEX(',', columnName, CHARINDEX(@TargetKey, columnName)) - CHARINDEX(@TargetKey, columnName) + 2
            ELSE LEN(columnName) - CHARINDEX(@TargetKey, columnName) + 1
        END,
        ''
    END
    END AS cleaned_string
FROM TableName

额外优化说明

如果需要避免匹配到类似OtherRemoveTitle:这类包含目标键名的其他键,可以给匹配逻辑加边界校验:匹配前先给原始字符串拼接一个前置空格,查找' ' + @TargetKey的位置即可,处理完再去掉多余的前置空格即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 12:06:02