Questa risposta è obsoleta. MySql ha un migliore supporto per le espressioni regolari.
No, è triste dire che MySQL non ha un modo per applicare una regex al contenuto di una colonna in una clausola SELECT, solo una clausola WHERE.
Ma puoi usare le normali funzioni di manipolazione delle stringhe (non regex) per farlo. Se la colonna contenente la stringa di parametro separata dalla e commerciale è denominata url
, puoi ottenere il numero ID con questa espressione di stringa fine, che trova il tuo numero ID.
CAST(RIGHT(url, LENGTH(url) - 3 - LOCATE('&id=', url)) AS SIGNED INTEGER)
Quindi, se vuoi un elenco di id
valori dall'url
colonne di table1
, puoi usare questo SELECT
interrogazione.
SELECT CAST(RIGHT(url, LENGTH(url) - 3 -
LOCATE('&id=', url)) AS SIGNED INTEGER) AS id
FROM table1
WHERE url REGEXP '&id=[0-9]+'
Come puoi vedere, questo utilizza la funzione di ricerca regexp per individuare le righe appropriate.
Non c'è niente di veloce in questo. La corrispondenza Regexp non può sfruttare un indice MySQL. Se hai la possibilità di caricare la tua tabella con la colonna id pre-estratta, sarà molto meglio cercare quando la tua tabella diventa grande.