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

Redshift SQL:从分隔列表中提取冒号后的数字代码

Redshift SQL提取codes字段中的数字列表解决方案

正确的REGEXP_REPLACE语句

直接用全局正则替换就能搞定,不需要多次嵌套REPLACE:

SELECT REGEXP_REPLACE(codes, '[^,:]+:', '', 'g') AS cleaned_codes
FROM your_table;

正则模式解释

  • [^,:]+:匹配任意1个及以上不是逗号或冒号的字符,刚好对应每个项里冒号前的标题部分(符合你说的标题以字母开头、不含逗号/冒号的场景)
  • ::紧跟标题后的冒号,和前面的标题部分一起匹配
  • '':把匹配到的"标题:"部分替换为空字符串
  • 'g':全局替换标志,确保所有项都被处理,而不是只替换第一个

你之前的方法问题在于把逗号和冒号都换成空格后,替换非数字内容会把分隔用的空格也去掉,导致数字连在一起,无法保留逗号分隔的结构。

正则表达式入门核心要点

基础元字符

  • .:匹配任意单个字符(换行符除外)
  • +:匹配前面的元素1次或多次
  • *:匹配前面的元素0次或多次
  • ^:方括号外表示行的开头;方括号内表示"排除",比如[^0-9]匹配非数字字符
  • $:表示行的结尾

常用字符类

  • [0-9]:匹配任意单个数字
  • [a-zA-Z]:匹配任意大小写字母
  • [^abc]:匹配除a、b、c之外的任意字符

量词与标志

  • {n}:精确匹配n次,比如[0-9]{3}匹配3位数字
  • {n,m}:匹配n到m次
  • 全局标志g(Redshift中作为REGEXP_REPLACE的第四个参数):替换所有匹配项,默认只替换第一个

练习技巧

  1. 先明确要保留/替换的内容,从简单模式开始写
  2. 用SELECT REGEXP_REPLACE('你的测试字符串', '正则', '替换值', 'g')快速验证效果,逐步调整正则

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 07:50:29