Использование регулярных выражений в SQL (Amazon Redshift) для извлечения тега - PullRequest
0 голосов
/ 21 марта 2019

Я пытался понять это несколько часов, но застрял.

Я пытаюсь извлечь эту подстроку

dg

из чего-то подобного

agent/bond,am/dg,day/sunday,man/woman,exemption/yes,account/true

или

am/dg,agent/bond,day/sunday,man/woman,exemption/yes,account/true

с использованием регулярных выражений в Redshift.

Я подошел к regexp_substr(tags,'[(^am\/$)][^,]+'), но это не сработало полностью.

Спасибо за любыепомощь, которую вы можете оказать.

Ответы [ 2 ]

0 голосов
/ 21 марта 2019

Как насчет этого с SUBSTRING вместе с регулярным выражением прогнозом и прогнозом на позитив ?

Объяснение: захватить тег с am/ перед ним и , после него, т.е. dg

SELECT
 SUBSTRING (
 'agent/bond,am/dg,day/sunday,man/woman,exemption/yes,account/true',
 '(?<=am/)(.*?)(?=,)'
 ) as tag;

ИЛИ

SELECT
 SUBSTRING (
 'am/dg,agent/bond,day/sunday,man/woman,exemption/yes,account/true',
 '(?<=am/)(.*?)(?=,)'
 ) as tag;
0 голосов
/ 21 марта 2019

Мы могли бы использовать REGEXP_REPLACE здесь с группой захвата:

SELECT
    REGEXP_REPLACE(input, '.*\yam/([^,]+).*', '$1')
FROM yourTable;
...