Amazon RedShift получить числа после регулярного выражения - PullRequest
1 голос
/ 29 января 2020

Из примера c мы получили это:

select email, regexp_replace( email, '@.*\\.(org|gov|com)$') 
from users limit 5; 

              email                | regexp_replace 
-----------------------------------+----------------  
  DonecFri@semperpretiumneque.com  | DonecFri
  mk1wait@UniOfTech.org            | mk1wait
  sed@redshiftemails.com           | sed
  bunyung@integermath.gov          | bunyung

В моем случае у меня есть такие строки:

ABCD01E002C
ABCSDD01E12C

И я хочу получить числа между 1 и 9 после символа E. Таким образом, выходные данные будут 2 и 12 соответственно для приведенного выше примера

1 Ответ

1 голос
/ 29 января 2020

Вы можете использовать REGEXP_SUBSTR, чтобы сопоставить E и любые нули после него, а затем захватить ди git от 1 до 9 и любой цифры после него в группе захвата:

REGEXP_SUBSTR(email, 'E0*([1-9][0-9]*)', 1, 1, 'e')

Аргумент e указывает REGEXP_SUBSTR вернуть первое захваченное значение.

См. демонстрационную версию regex

Детали шаблона

  • E - буква E
  • 0* - ноль или более 0 символов
  • ([1-9][0-9]*) - группа захвата # 1:
    • [1-9] - ненулевой ди git
    • [0-9]* - любые 0 или более цифр
...