Извлечение строки из таблицы Postgres на основе нескольких шаблонов - PullRequest
0 голосов
/ 02 марта 2020

У меня есть следующий столбец в таблице в базе данных Postgres.

col1
P02724-PRO_0000012134
P02725
P02724-1

Я хочу применить регулярное выражение для создания столбца со следующими значениями

col2
P02724
P02725
P02724-1

I написал следующий запрос, но запрос не может получить 'P02725'

regexp_match (col1, '.*-\d+|(.*)-') as col2

Какие изменения я должен внести в запрос, чтобы получить это значение?

Спасибо

1 Ответ

0 голосов
/ 02 марта 2020

Вместо использования чередования вы можете сделать - и элемент di git необязательным

^\w+(?:-\d+)?

Пояснение

  • ^ Начало строки
  • \w+ Совпадение с 1 + символами слова
  • (?: Группа без захвата
    • - \ d + Match -` и 1+ цифр
  • )? Закрыть группу и сделать ее необязательной

Или использовать отрицательный символьный класс вместо совпадающих символов слова

^[^-\r\n]+(?:-\d+)?

Regex demo | Postgresql демо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...