You need to enable JavaScript to run this app. SQL 移除冗余字符:从长拼接属性串中仅提取目标Size键值
优惠活动
大模型
产品
解决方案
定价
更多

SQL 移除冗余字符:从长拼接属性串中仅提取目标Size键值

SQL提取属性字段中Size值的修改方案

原有写法的问题根源

  • 当前的CASE截取逻辑没有设置截断边界:找到Size的起始位置后,直接从该位置一直取到整个Attributes字符串的末尾,自然会把后面拼接的所有冗余属性、空逗号都带出来
  • 匹配精度不足:用charindex('Size ', Attributes)定位时多带了多余空格,很容易出现位置偏移,甚至误把其他带Size字样的属性(比如样例里的Fits to Chest Size)当成目标值

可直接使用的修改逻辑

核心思路:以逗号作为属性段的分隔锚点,定位到Size键值对的前后两个逗号位置,只截取两个逗号之间的有效内容,不保留后面的冗余串。
适配你当前使用的SQL Server语法,修改后的CASE语句如下:

CASE 
  -- 强制匹配被逗号包裹的独立Size属性段,避免误匹配其他带Size字样的无关属性
  WHEN Attributes LIKE '%,Size = %,%' 
  THEN 
    SUBSTRING(
      Attributes,
      -- 定位目标内容的起始位置,跳过前面的分隔逗号
      CHARINDEX(',Size = ', Attributes) + 1,
      -- 计算截取长度:从Size位置开始,找到下一个逗号的位置,减去当前位置偏移,正好取出完整的Size值
      CHARINDEX(',', Attributes, CHARINDEX(',Size = ', Attributes) + LEN(',Size = ')) 
      - CHARINDEX(',Size = ', Attributes) - 1
    )
  ELSE '' 
END AS Size

效果说明

  • 用你提供的样例字符串测试,最终输出结果就是Size = XXL,后面拼接的其他属性、连续空逗号的冗余内容会被全部截断
  • 匹配规则做了防误判优化:不会把Fits to Chest Size这类本身包含Size关键词的其他属性当成提取目标
  • 兼容实际数据中可能出现的“属性串末尾没有逗号”的边界情况,不会因为格式不固定报错
  • 小提示:如果发现提取出来的Size值前后带多余空格,可以在外层的SUBSTRING结果外面套一层TRIM()函数,去掉首尾空白,让输出结果更干净

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.11.12 11:06:06