Dit antwoord is verouderd. MySql heeft betere regex-ondersteuning.
Nee, helaas heeft MySQL geen manier om een regex toe te passen op de inhoud van een kolom in een SELECT-component, alleen een WHERE-component.
Maar u kunt hiervoor gewone (niet-regex) tekenreeksmanipulatiefuncties gebruiken. Als de kolom met uw door ampersand gescheiden parameterreeks de naam url
heeft , kunt u het id-nummer krijgen met deze fijne tekenreeksuitdrukking, die uw id-nummer vindt.
CAST(RIGHT(url, LENGTH(url) - 3 - LOCATE('&id=', url)) AS SIGNED INTEGER)
Dus, als je een lijst wilt met id
waarden uit de url
kolommen van table1
, zou je deze SELECT
. kunnen gebruiken vraag.
SELECT CAST(RIGHT(url, LENGTH(url) - 3 -
LOCATE('&id=', url)) AS SIGNED INTEGER) AS id
FROM table1
WHERE url REGEXP '&id=[0-9]+'
Zoals je kunt zien, gebruikt dit de regexp-zoekfunctie om de juiste rijen te vinden.
Hier is niets snels aan. Regexp-overeenkomsten kunnen geen MySQL-index misbruiken. Als je de keuze hebt om je tabel te laden met de id-kolom voorgeëxtraheerd, kun je veel beter zoeken wanneer je tafel groot wordt.