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

3 Cara untuk Mendeteksi jika String Cocok dengan Ekspresi Reguler di MySQL

MySQL memiliki sejumlah fungsi dan operator yang memungkinkan kita untuk melakukan operasi menggunakan ekspresi reguler (regex). Artikel ini menyajikan dua operator dan satu fungsi yang memungkinkan kita mengetahui apakah string cocok dengan ekspresi reguler yang ditentukan oleh pola tertentu.

Fungsi dan operator regex ini adalah:

  • REGEXP_LIKE()
  • REGEXP
  • RLIKE

Ini semua pada dasarnya setara, karena operator (dua yang kedua) keduanya sinonim dari fungsi (yang pertama). Bagaimanapun, Anda dapat melihat contoh dari ketiga tindakan di bawah ini.

REGEXP_LIKE() Fungsi

Pertama, mari kita lihat fungsinya. Berikut adalah contoh menjalankan pencarian regex menggunakan REGEXP_LIKE() fungsi:

SELECT 
  REGEXP_LIKE('Car', '^C') AS 'Match',
  REGEXP_LIKE('Bar', '^C') AS 'No Match';

Hasil:

+-------+----------+
| Match | No Match |
+-------+----------+
|     1 |        0 |
+-------+----------+

String pertama cocok (karena dimulai dengan C ) jadi hasilnya 1 . String kedua tidak cocok dan hasilnya adalah 0 .

Namun, fungsi ini bisa jauh lebih berguna daripada sekadar mengembalikan 1 atau 0 . Misalnya, dapat ditambahkan ke WHERE klausa saat menanyakan database. Dalam hal ini, kita bisa mendapatkan daftar baris yang berisi kecocokan untuk pola tersebut.

Ini contohnya:

SELECT AlbumId, AlbumName
FROM Albums
WHERE REGEXP_LIKE(AlbumName, '^Power');

Hasil:

+---------+------------+
| AlbumId | AlbumName  |
+---------+------------+
|       1 | Powerslave |
|       2 | Powerage   |
+---------+------------+

Berikut tabel lengkapnya:

SELECT AlbumId, AlbumName
FROM Albums;

Hasil:

+---------+--------------------------+
| AlbumId | AlbumName                |
+---------+--------------------------+
|       1 | Powerslave               |
|       2 | Powerage                 |
|       3 | Singing Down the Lane    |
|       4 | Ziltoid the Omniscient   |
|       5 | Casualties of Cool       |
|       6 | Epicloud                 |
|       7 | Somewhere in Time        |
|       8 | Piece of Mind            |
|       9 | Killers                  |
|      10 | No Prayer for the Dying  |
|      11 | No Sound Without Silence |
|      12 | Big Swing Face           |
|      13 | Blue Night               |
|      14 | Eternity                 |
|      15 | Scandinavia              |
|      16 | Long Lost Suitcase       |
|      17 | Praise and Blame         |
|      18 | Along Came Jones         |
|      19 | All Night Wrong          |
|      20 | The Sixteen Men of Tain  |
+---------+--------------------------+

REGEXP Operator

Berikut cara melakukan hal yang sama menggunakan REGEXP operator:

SELECT 
  'Car' REGEXP '^C' AS 'Match',
  'Bar' REGEXP '^C' AS 'No Match';

Hasil:

+-------+----------+
| Match | No Match |
+-------+----------+
|     1 |        0 |
+-------+----------+

Dan contoh databasenya:

SELECT AlbumId, AlbumName
FROM Albums
WHERE AlbumName REGEXP '^Power';

Hasil:

+---------+------------+
| AlbumId | AlbumName  |
+---------+------------+
|       1 | Powerslave |
|       2 | Powerage   |
+---------+------------+

Anda juga dapat menggunakan NOT REGEXP untuk mengembalikan hasil sebaliknya.

RLIKE Operator

Dan ini dia menggunakan RLIKE :

SELECT 
  'Car' RLIKE '^C' AS 'Match',
  'Bar' RLIKE '^C' AS 'No Match';

Hasil:

+-------+----------+
| Match | No Match |
+-------+----------+
|     1 |        0 |
+-------+----------+

Dan contoh databasenya:

SELECT AlbumId, AlbumName
FROM Albums
WHERE AlbumName RLIKE '^Power';

Hasil:

+---------+------------+
| AlbumId | AlbumName  |
+---------+------------+
|       1 | Powerslave |
|       2 | Powerage   |
+---------+------------+

Dalam hal ini saya cukup menukar REGEXP untuk RLIKE dan biarkan sisa kodenya.

Anda juga dapat menggunakan NOT RLIKE untuk mengembalikan hasil sebaliknya.

Fungsi REGEX Lainnya

MySQL juga menyertakan beberapa fungsi dan operator regex lainnya. Tiga di antaranya tercantum di bawah ini. Secara teknis, Anda juga bisa menggunakan dua yang pertama untuk "mendeteksi" apakah string cocok dengan pola regex (dalam hal ini, mungkin artikel ini harus berjudul "5 Cara untuk Mendeteksi jika String Cocok dengan Ekspresi Reguler di MySQL" daripada hanya " 3 cara…”).

Bagaimanapun, berikut adalah tiga fungsi regex lagi:

  • Anda dapat menggunakan REGEXP_INSTR() berfungsi untuk mengembalikan indeks awal substring yang cocok dengan pola ekspresi reguler.
  • REGEXP_SUBSTR() fungsi mengembalikan substring yang cocok dengan pola ekspresi reguler yang diberikan.
  • Dan REGEXP_REPLACE() fungsi menggantikan kemunculan substring dalam string yang cocok dengan pola ekspresi reguler yang diberikan.

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. ORD() Contoh – MySQL

  2. 2017 @Somenines:Merayakan Kisah Pelanggan Kami

  3. Contoh CURRENT_TIMESTAMP – MySQL

  4. Menginstal WordPress 5 di ZEIT Sekarang dengan Hosting MySQL

  5. Bagaimana cara mengambil nama pengguna dan kata sandi MySQL saya?