Извлечение числа из столбца - PullRequest
0 голосов
/ 25 сентября 2018

У меня есть таблица Job со столбцом Comment, содержащим следующие данные:

-#AB1 #XY: https://xxxxxxxxxx/xxx/xxx/xxxxxxxx/12345/xxxxxxx
-#XY: https://xxxxxxx/xxx/xxx/xxxxxxxx/23456/xxxxx #AB2
-#XY: https://xxxxxxxxxx/xxx/xxx/xxxxxxxx/34567/xxxx
-#XY: https://xxxxxxxx/xxx/xxx/xxxxxx/45677/xxxxxxxx

Так что, если в столбце комментариев есть #XY, он должен дать мне номер в ссылке (https://xxxxxxxxxx/xxx/xxx/xxxxxxxx/12345/xxxxxxx).

Если в столбце есть и #XY, и #AB, он должен дать мне число рядом с #AB.

Я использовал:

SELECT substring(comment FROM '[0-9]+') AS original_id,
FROM job
WHERE internal_comment LIKE '%AB%'

Но это дает мне только первый номер в столбце.Может ли кто-нибудь помочь мне с этим запросом.

1 Ответ

0 голосов
/ 25 сентября 2018

Это должно работать, если в ссылке нет других цифр, кроме выделенных:

SELECT 
/* match in any order */
CASE WHEN comment ~ '(#AB.*#XY)|(#XY.*#AB)'
/* match #AB{ any digits } and get only the number */
THEN (REGEXP_MATCHES(Comment, '(#AB)(\d+)'))[2]
/* find the digits in the link */
ELSE (REGEXP_MATCHES(comment, '\d+'))[1] END AS original_id
FROM job;

Рабочая скрипка здесь

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