Jawaban ini sudah usang. MySql memiliki dukungan regex yang lebih baik.
Tidak, sayangnya MySQL tidak memiliki cara untuk menerapkan regex ke konten kolom dalam klausa SELECT, hanya klausa WHERE.
Tetapi Anda dapat menggunakan fungsi manipulasi string biasa (non-regex) untuk melakukan ini. Jika kolom yang berisi string parameter yang dipisahkan ampersand bernama url
, Anda bisa mendapatkan nomor id dengan ekspresi string halus ini, yang menemukan nomor id Anda.
CAST(RIGHT(url, LENGTH(url) - 3 - LOCATE('&id=', url)) AS SIGNED INTEGER)
Jadi, jika Anda ingin daftar id
nilai dari url
kolom table1
, Anda dapat menggunakan SELECT
. ini kueri.
SELECT CAST(RIGHT(url, LENGTH(url) - 3 -
LOCATE('&id=', url)) AS SIGNED INTEGER) AS id
FROM table1
WHERE url REGEXP '&id=[0-9]+'
Seperti yang Anda lihat, ini menggunakan fungsi pencarian regexp untuk menemukan baris yang sesuai.
Tidak ada yang cepat tentang ini. Pencocokan regexp tidak dapat mengeksploitasi indeks MySQL. Jika Anda memiliki pilihan untuk memuat tabel Anda dengan kolom id yang telah diekstraksi sebelumnya, Anda akan jauh lebih baik mencari saat tabel Anda menjadi besar.