Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Memilih bagian dari bidang dengan regex

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.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Di mana set Hasil disimpan saat bekerja dengan jdbc dan driver Oracle

  2. MySQL - ORDER BY nilai dalam IN()

  3. kesalahan kueri mysql pada integrasi data pentaho (cdb)

  4. MySQL – Berbagai Metode untuk Mengetahui Pengguna Saat Ini

  5. Menggunakan Alias ​​​​dalam Perhitungan SQL