Ta odpowiedź jest przestarzała. MySql ma lepszą obsługę wyrażeń regularnych.
Nie, niestety MySQL nie ma sposobu na zastosowanie wyrażenia regularnego do zawartości kolumny w klauzuli SELECT, tylko klauzulę WHERE.
Ale możesz to zrobić za pomocą zwykłych (nie wyrażeń regularnych) funkcji manipulacji ciągami znaków. Jeśli kolumna zawierająca ciąg parametrów oddzielonych znakami ampersand ma nazwę url
, możesz uzyskać numer identyfikacyjny za pomocą tego drobnego wyrażenia łańcuchowego, które odnajdzie Twój numer identyfikacyjny.
CAST(RIGHT(url, LENGTH(url) - 3 - LOCATE('&id=', url)) AS SIGNED INTEGER)
Tak więc, jeśli chcesz listę id
wartości z url
kolumny table1
, możesz użyć tego SELECT
zapytanie.
SELECT CAST(RIGHT(url, LENGTH(url) - 3 -
LOCATE('&id=', url)) AS SIGNED INTEGER) AS id
FROM table1
WHERE url REGEXP '&id=[0-9]+'
Jak widać, używa to funkcji wyszukiwania wyrażeń regularnych, aby zlokalizować odpowiednie wiersze.
Nie ma w tym nic szybkiego. Dopasowanie wyrażenia regularnego nie może wykorzystywać indeksu MySQL. Jeśli masz możliwość załadowania tabeli z wstępnie wyodrębnioną kolumną id, znacznie lepiej będzie przeszukiwać, gdy Twoja tabela stanie się duża.