Извлечение целочисленного идентификатора из URL в SQL - PullRequest
1 голос
/ 21 июня 2019

Учитывая URL как https://xyz.abc.yahoo.com/issues/80483987/tasks/1

Как написать SQL-запрос для замены / извлечения URL-адресов, подобных этому, с целочисленным идентификатором 80483987

Использование REGEXP_REPLACE(mystr, r'[^\d]+', ' ') дает мне 80483987 1

В конце 1 является проблемой.

Ответы [ 2 ]

1 голос
/ 21 июня 2019

Вы можете просто REGEXP_EXTRACT цифры после /issues/ подстроки:

REGEXP_EXTRACT(mystr, r'/issues/([0-9]+)')

См. Демоверсию regex .

/issues/ будет сопоставлено, а ([0-9]+) будет захватить 1 или более цифр в группу захвата # 1, и это значение будет возвращено REGEXP_EXTRACT.

1 голос
/ 21 июня 2019

Применить REGEXP_REPLACE дважды:

REGEXP_REPLACE(REGEXP_REPLACE(mystr, r'^[^\d]+', ''), r'/.*$', '')

Объяснение

Внутренний вызов удаляет все начальные не-цифры, внешний вызов удаляет суффикс после идентификатора. ^ и $ являются так называемыми якорями и не представляют символ, но представляют собой абстрактные (длина 0) понятия «начало / конец тестовой строки». Это будет работать во всех распространенных типах и механизмах регулярных выражений.

Решение зависит от числового идентификатора, составляющего сегмент местоположения в URL.

Обратите внимание, что подход хрупок: например. это не удастся для URL с номером порта.

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