Dette svar er forældet. MySql har bedre regex-understøttelse.
Nej, trist at sige, at MySQL ikke har en måde at anvende et regex på en kolonnes indhold i en SELECT-sætning, kun en WHERE-sætning.
Men du kan bruge almindelige (ikke-regex) strengmanipulationsfunktioner til at gøre dette. Hvis kolonnen, der indeholder din og-sand-separerede parameterstreng, hedder url
, kan du få id-nummeret med dette fine streng-udtryk, som finder dit id-nummer.
CAST(RIGHT(url, LENGTH(url) - 3 - LOCATE('&id=', url)) AS SIGNED INTEGER)
Så hvis du vil have en liste over id
værdier fra url
kolonner i table1
, kan du bruge denne SELECT
forespørgsel.
SELECT CAST(RIGHT(url, LENGTH(url) - 3 -
LOCATE('&id=', url)) AS SIGNED INTEGER) AS id
FROM table1
WHERE url REGEXP '&id=[0-9]+'
Som du kan se, bruger dette regexp-søgefunktionen til at finde de relevante rækker.
Der er ikke noget hurtigt ved dette. Regexp-matching kan ikke udnytte et MySQL-indeks. Hvis du har valget mellem at indlæse dit bord med id-kolonnen præ-ekstraheret, vil du være meget bedre stillet at søge, når din tabel bliver stor.