首页 > 解决方案 > Redshift - 根据模式提取数据

问题描述

我正在尝试使用 Redshift 中的特定模式从以下文本中提取子字符串。

value
proda_cat1_subcat_a_jan2020
cat2_subcat_b_prodb_jan2020

我正在尝试从上面的字符串中提取cat1_subcat_a字符串cat2_subcat_b

我试过这样做regexp_substr(value,'cat[^_]'),但这只会将字符串拉到第一个下划线

预期输出:

value, output
proda_cat1_subcat_a_jan2020, cat1_subcat_a
cat2_subcat_b_prodb_jan2020, cat2_subcat_b

标签: regexamazon-redshift

解决方案


尝试使用以下正则表达式模式:

cat[0-9]+_[^_]+_[^_]+

SQL查询:

SELECT
    value,
    REGEXP_SUBSTR(value, 'cat[0-9]+_[^_]+_[^_]+') AS output
FROM yourTable;

演示

演示在 Oracle 中,但语法也应该适用于 Redshift。


推荐阅读