Detta svar är föråldrat. MySql har bättre stöd för regex.
Nej, tråkigt att säga att MySQL inte har ett sätt att tillämpa ett regex på en kolumns innehåll i en SELECT-sats, bara en WHERE-sats.
Men du kan använda vanliga (icke-regex) strängmanipuleringsfunktioner för att göra detta. Om kolumnen som innehåller din et-tecken-separerade parametersträng heter url
, kan du få id-numret med detta fina stränguttryck, som hittar ditt id-nummer.
CAST(RIGHT(url, LENGTH(url) - 3 - LOCATE('&id=', url)) AS SIGNED INTEGER)
Så om du vill ha en lista med id
värden från url
kolumner i table1
, kan du använda denna SELECT
fråga.
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 använder detta regexp-sökfunktionen för att hitta rätt rader.
Det är inget snabbt med detta. Regexp-matchning kan inte utnyttja ett MySQL-index. Om du kan välja att ladda ditt bord med id-kolumnen förextraherad kommer du att bli mycket bättre av att söka när ditt bord blir stort.