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

如何在Redshift中提取方括号与减号之间的字符串

解决Redshift中提取指定区间字符串的问题

你可以利用Redshift的REGEXP_SUBSTR正则提取函数来实现需求,这个方法比嵌套substring和charindex更直观且不易出错。

实现语句

SELECT 
  TRIM(REGEXP_SUBSTR(note_internal, '\[(.*?)\s*-', 1, 1, 'e')) AS result
FROM your_table_name;

语句说明

  • \[(.*?)\s*-:正则表达式的含义
    • \[:匹配左方括号[(需转义,因为[在正则中是特殊字符)
    • (.*?):非贪婪匹配任意字符,将目标内容捕获到分组1中
    • \s*-:匹配-前的任意空格(包括0个)和-本身
  • REGEXP_SUBSTR参数:1表示从字符串第1位开始匹配,1表示取第一个匹配结果,'e'表示返回捕获分组的内容
  • TRIM:去除提取内容前后可能存在的多余空格

测试验证

用你提供的示例数据测试,结果完全符合预期:

note_internalresult
package received by [THP - (YBS)]; notes: (Status Manual by jack)THP
package received by [THP Head Office TRIP 1 - (HO)]; notes: (Status Manual by jack)THP Head Office TRIP 1

原语句问题分析

你之前的substring语句出错原因:

  • 使用charindex('-', note_internal)匹配第一个-,结合reverse计算的却是最后一个-的位置,两者差值逻辑错误,导致截取长度不对
  • 未处理[和-之间的空格,会导致结果包含多余空白字符

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 09:42:11