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

Contoh MySQL REGEXP

Di MySQL, REGEXP operator digunakan untuk menentukan apakah string cocok atau tidak dengan ekspresi reguler. Ini adalah sinonim untuk REGEXP_LIKE() .

Jika string cocok dengan ekspresi reguler yang diberikan, hasilnya adalah 1 , jika tidak maka 0 .

Sintaks

Sintaksnya seperti ini:

expr REGEXP pat

Dimana expr adalah string input dan pat adalah ekspresi reguler yang Anda uji stringnya.

Contoh 1 – Ekspresi Reguler Dasar

Ekspresi reguler paling dasar yang dapat kita gunakan adalah ekspresi yang tidak memiliki karakter khusus di dalamnya. Di sini, kita hanya menggunakan string. Jika ada bagian dari string input yang cocok dengan string itu, ia mengembalikan kecocokan.

PILIH 'Jagung' REGEXP 'Jagung' SEBAGAI 'Jagung', 'Acorn' REGEXP 'Jagung' AS 'Acorn', 'Pojok' REGEXP 'Jagung' SEBAGAI 'Pojok', 'Keju' REGEXP 'Jagung' SEBAGAI 'Keju ';

Hasil:

+------+-------+--------+--------+| Jagung | biji pohon ek | Pojok | Keju |+------+-------+--------+--------+| 1 | 1 | 1 | 0 |+------+-------+--------+--------+

Contoh 2 – Mencocokkan Awal Sebuah String

Dalam contoh ini, ekspresi reguler menetapkan bahwa string harus dimulai dengan Co .

PILIH 'Corn' REGEXP '^Co' AS 'Corn', 'Acorn' REGEXP '^Co' AS 'Acorn', 'Cheese' REGEXP '^Co' AS 'Cheese';

Hasil:

+------+-------+--------+| Jagung | biji pohon ek | Keju |+------+-------+--------+| 1 | 0 | 0 |+------+-------+--------+

Contoh 3 – Mencocokkan Ujung String

Dalam contoh ini, ekspresi reguler menetapkan bahwa string harus diakhiri dengan rn .

PILIH 'Jagung' REGEXP 'rn$' AS 'Jagung', 'Acorn' REGEXP 'rn$' AS 'Acorn', 'Cheese' REGEXP 'rn$' AS 'Cheese';

Hasil:

+------+-------+--------+| Jagung | biji pohon ek | Keju |+------+-------+--------+| 1 | 1 | 0 |+------+-------+--------+

Contoh 4 – Cocokkan Semua Karakter

. karakter cocok dengan karakter apa pun.

PILIH 'Jagung' REGEXP '.' SEBAGAI 'Jagung', 'Keju' REGEXP '.' SEBAGAI 'Keju', '' REGEXP '.' SEBAGAI '';

Hasil:

+------+--------+---+| Jagung | keju | |+------+--------+---+| 1 | 1 | 0 |+------+----+---+

Karakter ini biasanya digunakan bersama dengan karakter lain untuk menentukan kriteria lebih lanjut. Misalnya:

PILIH 'Jagung' REGEXP '^C.rn$' AS 'Jagung', 'Crn' REGEXP '^C.rn$' AS 'Crn';

Hasil:

+------+-----+| Jagung | Crn |+------+-----+| 1 | 0 |+------+-----+

Di sini kita tentukan bahwa string harus dimulai dengan C , yang harus diikuti oleh karakter (karakter apa saja), dan harus diakhiri dengan rn .

Perhatikan bahwa karakter ini menentukan satu contoh karakter. Jika Anda ingin menentukan beberapa instance (misalnya ee alih-alih hanya e ), Anda perlu menambahkan lebih banyak . karakter.

SELECT 'Tweet' REGEXP '^Tw..t$' AS 'Tweet', 'Tweat' REGEXP '^Tw..t$' AS 'Tweat', 'Tweet' REGEXP '^Tw.t$' AS 'Tweet', 'Twit' REGEXP '^Tw..t$' AS 'Twit';

Hasil:

+-------+-------+-------+------+| Tweet | Tweat | Tweet | Twit |+-------+-------+-------+------+| 1 | 1 | 0 | 0 |+-------+-------+-------+------+

Cara lain untuk melakukannya adalah dengan menentukan jumlah kemunculan dalam kurung kurawal:

SELECT 'Tweet' REGEXP '^Tw.{2}t$' AS 'Tweet', 'Tweat' REGEXP '^Tw.{2}t$' AS 'Tweat', 'Tweet' REGEXP '^Tw. {1}t$' AS 'Tweet', 'Twit' REGEXP '^Tw.{2}t$' AS 'Twit';

Hasil:

+-------+-------+-------+------+| Tweet | Tweat | Tweet | Twit |+-------+-------+-------+------+| 1 | 1 | 0 | 0 |+-------+-------+-------+------+

Namun, jika Anda mengetahui karakter yang Anda cari, Anda dapat menentukan karakter tersebut (bukan . karakter), seperti yang ditunjukkan dalam contoh berikut.

Contoh 5 – Mencocokkan Nol atau Lebih Banyak Instance dari Karakter Tertentu

Kita dapat melakukan hal berikut untuk menentukan nol atau lebih instance dari e karakter:

SELECT 'Twet' REGEXP '^Twe*t$' AS 'Twet', 'Tweet' REGEXP '^Twe*t$' AS 'Tweet', 'Tweeet' REGEXP '^Twe*t$' AS 'Tweeet ', 'Twt' REGEXP '^Twe*t$' AS 'Twt', 'Twit' REGEXP '^Twe*t$' AS 'Twit', 'Twiet' REGEXP '^Twe*t$' AS 'Twiet', 'Tweit' REGEXP '^Twe*t$' AS 'Tweit';

Hasil:

+------+-------+--------+-----+------+-------+- ------+| Twet | Tweet | Tweet | Twt | Twit | Twit | Tweit |+------+-------+--------+-----+------+-------+-- -----+| 1 | 1 | 1 | 1 | 0 | 0 | 0 |+------+-------+--------+-----+------+-------+-- -----+

Empat pertandingan pertama tetapi tiga pertandingan terakhir tidak.

Contoh 6 – Mencocokkan Satu atau Lebih Instance dari Karakter Tertentu

Kita dapat memodifikasi contoh sebelumnya sehingga kita hanya mendapatkan kecocokan jika satu atau lebih banyak karakter ditemukan (contoh sebelumnya mengembalikan kecocokan jika nol atau lebih ditemukan). Untuk melakukan ini, kita cukup menggunakan + bukannya * :

SELECT 'Twet' REGEXP '^Twe+t$' AS 'Twet', 'Tweet' REGEXP '^Twe+t$' AS 'Tweet', 'Tweeet' REGEXP '^Twe+t$' AS 'Tweeet ', 'Twt' REGEXP '^Twe+t$' AS 'Twt', 'Twit' REGEXP '^Twe+t$' AS 'Twit', 'Twiet' REGEXP '^Twe+t$' AS 'Twiet', 'Tweit' REGEXP '^Twe+t$' AS 'Tweit';

Hasil:

+------+-------+--------+-----+------+-------+- ------+| Twet | Tweet | Tweet | Twt | Twit | Twit | Tweit |+------+-------+--------+-----+------+-------+-- -----+| 1 | 1 | 1 | 0 | 0 | 0 | 0 |+------+-------+--------+-----+------+-------+-- -----+

Dalam hal ini, kata keempat mengembalikan hasil yang berbeda dengan contoh sebelumnya.

Contoh 7 – Mencocokkan Nol atau Satu Instance dari Karakter Tertentu

Kita dapat memodifikasi contoh sebelumnya sehingga kita hanya mendapatkan kecocokan pada nol atau salah satu karakter yang diinginkan. Untuk melakukan ini, kami menggunakan ? :

SELECT 'Twet' REGEXP '^Twe?t$' AS 'Twet', 'Tweet' REGEXP '^Twe?t$' AS 'Tweet', 'Tweeet' REGEXP '^Twe?t$' AS 'Tweeet ', 'Twt' REGEXP '^Twe?t$' AS 'Twt', 'Twit' REGEXP '^Twe?t$' AS 'Twit', 'Twiet' REGEXP '^Twe?t$' AS 'Twiet', 'Tweit' REGEXP '^Twe?t$' AS 'Tweit';

Hasil:

+------+-------+--------+-----+------+-------+- ------+| Twet | Tweet | Tweet | Twt | Twit | Twit | Tweit |+------+-------+--------+-----+------+-------+-- -----+| 1 | 0 | 0 | 1 | 0 | 0 | 0 |+------+-------+--------+-----+------+-------+-- -----+

Contoh 8 – Pergantian

Anda dapat menggunakan | karakter untuk mencocokkan satu atau beberapa urutan karakter:

SELECT 'Tweet' REGEXP 'Tw|et' AS 'Tweet', 'For Let' REGEXP 'Tw|et' AS 'For Let', 'Banana' REGEXP 'Tw|et' AS 'Banana'; 

Hasil:

+-------+---------+--------+| Tweet | Untuk Biarkan | Pisang |+-------+--------+--------+| 1 | 1 | 0 |+-------+--------+--------+

Berikut ini contoh lain di mana saya mencari seluruh kata:

PILIH 'Kucing' REGEXP 'Kucing|Anjing' SEBAGAI 'Kucing', 'Anjing' REGEXP 'Kucing|Anjing' SEBAGAI 'Anjing', 'Anjing' REGEXP 'Kucing|Anjing' SEBAGAI 'Anjing', 'Pisang' REGEXP 'Kucing|Anjing' SEBAGAI 'Pisang';

Hasil:

+-----+-----+--------+--------+| Kucing | Anjing | Anjing | Pisang |+-----+-----+--------+--------+| 1 | 1 | 1 | 0 |+-----+-----+---------+--------+

Kami masih mendapatkan kecocokan meskipun ekspresi reguler kami hanya cocok dengan sebagian dari string.

Contoh 9 – Mencocokkan Nol atau Lebih Banyak Instance dari Urutan

Anda dapat menggunakan tanda kurung bersama dengan tanda bintang ()* untuk menentukan nol atau lebih contoh dari suatu urutan:

SELECT 'Banana' REGEXP '(an)*' AS 'Banana', 'Land' REGEXP '(an)*' AS 'Land', 'Cheese' REGEXP '(an)*' AS 'Cheese'; 

Hasil:

+--------+------+--------+| pisang | tanah | Keju |+--------+------+--------+| 1 | 1 | 1 |+--------+------+--------+

Contoh lain:

SELECT 'Banana' REGEXP '^B(an)*d$' AS 'Banana', 'Band' REGEXP '^B(an)*d$' AS 'Band', 'Botak' REGEXP '^B( an)*d$' AS 'Botak', 'Buruk' REGEXP '^B(an)*d$' AS 'Buruk';

Hasil:

+--------+------+------+-----+| pisang | Band | botak | Buruk |+--------+------+------+-----+| 0 | 1 | 0 | 0 |+--------+------+------+-----+

Contoh 10 – Pengulangan

Seperti yang terlihat pada contoh sebelumnya, Anda dapat menggunakan kurung kurawal untuk menentukan pengulangan. Notasi ini memberikan cara yang lebih umum untuk menulis ekspresi reguler daripada beberapa contoh sebelumnya:

PILIH 'Tweeet' REGEXP 'e{3}' AS 'Tweeet', 'Tweet' REGEXP 'e{3}' AS 'Tweet';

Hasil:

+--------+-------+| Tweet | Tweet |+--------+-------+| 1 | 0 |+--------+-------+

Contoh 11 – Rentang

Anda dapat menggunakan karakter tanda hubung untuk menentukan rentang. Berikut adalah contoh yang menentukan rentang angka:

SELECT 'Tweet 123' REGEXP '[0-9]' AS 'Tweet 123', 'Tweet ABC' REGEXP '[0-9]' AS 'Tweet ABC';

Hasil:

+--------+-------+| Tweet | Tweet |+--------+-------+| 1 | 0 |+--------+-------+

Dan contoh berikut menentukan rentang huruf:

SELECT 'Tweet 123' REGEXP '[A-Z]' AS 'Tweet 123', 'ABC' REGEXP '[A-Z]' AS 'ABC', '123' REGEXP '[A-Z]' AS '123'; 

Hasil:

+--------+-------+| Tweet | Tweet |+--------+-------+| 1 | 0 |+--------+-------+

Inilah yang terjadi jika kita membatasi rentang angka:

PILIH '123' REGEXP '[1-3]' AS '123', '012' REGEXP '[1-3]' AS '012', '045' REGEXP '[1-3]' AS '045 ';

Hasil:

+-----+-----+-----+| 123 | 012 | 045 |+-----+-----+-----+| 1 | 1 | 0 |+-----+-----+-----+

Contoh 12 – Tidak Dalam Rentang

Kita dapat menggunakan ^ karakter untuk mengubah contoh sebelumnya sehingga rentang karakter tertentu dikecualikan:

PILIH '123' REGEXP '[^1-3]' AS '123', '012' REGEXP '[^1-3]' AS '012', '045' REGEXP '[^1-3]' AS '045';

Hasil:

+-----+-----+-----+| 123 | 012 | 045 |+-----+-----+-----+| 0 | 1 | 1 |+-----+-----+-----+

Jadi kita mendapatkan hasil yang berlawanan dengan contoh sebelumnya.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Hubungkan Dengan Setara Sebelumnya untuk MySQL

  2. Cara mudah untuk mengekspor tabel SQL tanpa akses ke server atau phpMyADMIN

  3. Bisakah saya secara membabi buta mengganti semua fungsi mysql_ dengan mysqli_?

  4. Contoh UTC_TIME – MySQL

  5. TAMBAHKAN () Contoh – MySQL