Redshift - извлечение данных по шаблону - PullRequest
0 голосов
/ 16 июня 2020

Я пытаюсь извлечь подстроку из приведенного ниже текста, используя определенный шаблон c в 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

1 Ответ

1 голос
/ 16 июня 2020

Попробуйте использовать следующий шаблон регулярного выражения:

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

SQL запрос:

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

Демо

Демонстрация находится в Oracle, но синтаксис также должен работать с Redshift.

...