Tato odpověď je zastaralá. MySql má lepší podporu regulárních výrazů.
Ne, je smutné říci, že MySQL nemá způsob, jak aplikovat regulární výraz na obsah sloupce v klauzuli SELECT, pouze klauzuli WHERE.
Ale můžete k tomu použít běžné (neregulární) funkce pro manipulaci s řetězci. Pokud se sloupec obsahující řetězec parametru oddělený ampersandem jmenuje url
, můžete získat identifikační číslo pomocí tohoto jemného řetězcového výrazu, který najde vaše identifikační číslo.
CAST(RIGHT(url, LENGTH(url) - 3 - LOCATE('&id=', url)) AS SIGNED INTEGER)
Pokud tedy chcete seznam id
hodnoty z url
sloupce table1
, můžete použít tento SELECT
dotaz.
SELECT CAST(RIGHT(url, LENGTH(url) - 3 -
LOCATE('&id=', url)) AS SIGNED INTEGER) AS id
FROM table1
WHERE url REGEXP '&id=[0-9]+'
Jak můžete vidět, toto používá funkci vyhledávání regulárních výrazů k nalezení příslušných řádků.
Na tom není nic rychlého. Shoda regulárních výrazů nemůže zneužít index MySQL. Pokud máte možnost načíst tabulku s předem extrahovaným sloupcem id, bude se vám mnohem lépe hledat, až bude váš stůl velký.