Как извлечь идентификатор из URL в запросе? - PullRequest
1 голос
/ 09 июля 2019

У меня есть таблица со столбцом, содержащим много URL, как этот:

https://myshop.com/lv/buitine-technika-elektronika/virtuves-iranga/virduliai/virdulys-elektrinis-virdulys-forme-fkg-147?id=22031685

Я хочу извлечь идентификатор из URL, но я понятия не имею, как это сделатьэтот.Я мог бы легко сделать это в Python позже, используя это regex:

\?id\=(\d+)

Но я хотел бы подготовить как можно больше данных в моем запросе, прежде чем переходить на Python, если это возможно.Я знаю, как использовать регулярные выражения в предложении MySQL where, но не знаю, как использовать его где-либо еще.Есть ли способ сделать это?

Длина идентификатора может быть другой, и после этого может быть что-то еще ...

1 Ответ

2 голосов
/ 09 июля 2019

Если бы каждый URL имел только один параметр запроса id, то мы можем использовать SUBSTRING_INDEX:

SELECT SUBSTRING_INDEX(url, '?id=', -1) AS id
FROM yourTable;

Демо

Для более общего решения в MySQL 8+ мы можем использовать REGEXP_SUBSTRING:

SELECT REGEXP_REPLACE(url, '^.*?.*id=([^&]+).*$', '$1') AS id
FROM yourTable;

Демо

Подход на основе регулярных выражений может обрабатывать id, появляющиеся в любом месте строки запроса.

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