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

Bagaimana Operator LIKE Bekerja di MySQL

Di MySQL, LIKE operator melakukan pencocokan pola menggunakan pola SQL.

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

Polanya tidak harus berupa string literal. Fungsi ini dapat digunakan dengan ekspresi string dan kolom tabel.

Sintaks

Sintaksnya seperti ini:

expr LIKE pat [ESCAPE 'escape_char']

Dimana expr adalah string input dan pat adalah pola yang Anda gunakan untuk menguji string.

ESCAPE opsional klausa memungkinkan Anda untuk menentukan karakter pelarian. Karakter escape default adalah \ , jadi Anda dapat menghilangkan klausa ini jika Anda tidak perlu mengubahnya.

Contoh 1 – Penggunaan Dasar

Berikut adalah contoh cara menggunakan operator ini dalam SELECT pernyataan:

SELECT 'Charlie' LIKE 'Char%';

Hasil:

+------------------------+
| 'Charlie' LIKE 'Char%' |
+------------------------+
|                      1 |
+------------------------+

Dalam hal ini, nilai yang dikembalikan adalah 1 yang berarti bahwa string input cocok dengan polanya. Secara khusus, kami menetapkan bahwa string input harus dimulai dengan Char dan diakhiri dengan apapun. % karakter cocok dengan sejumlah karakter (termasuk nol karakter).

Inilah yang terjadi jika kita membuang % :

SELECT 'Charlie' LIKE 'Char';

Hasil:

+-----------------------+
| 'Charlie' LIKE 'Char' |
+-----------------------+
|                     0 |
+-----------------------+

Hasil yang dikembalikan adalah 0 yang berarti tidak ada kecocokan. Ini karena kami tidak menggunakan karakter wildcard untuk menentukan karakter lain.

Contoh 2 – _ Karakter pengganti

Kami juga memiliki opsi untuk menggunakan _ karakter wildcard untuk menentukan hanya satu karakter. Ini contohnya:

SELECT 'Charlie' LIKE 'Ch_rlie';

Hasil:

+--------------------------+
| 'Charlie' LIKE 'Ch_rlie' |
+--------------------------+
|                        1 |
+--------------------------+

Dua karakter wildcard dapat digabungkan dalam suatu pola jika diperlukan:

SELECT 'Charlie likes donuts' LIKE 'Ch_rlie%' AS 'Result';

Hasil:

+--------+
| Result |
+--------+
|      1 |
+--------+

Berikut beberapa lainnya:

SELECT 
  'Charlie likes donuts' LIKE 'Ch_rlie%donuts' AS 'Result 1',
  'Charlie likes donuts' LIKE 'Ch_rlie%nuts' AS 'Result 2',
  'Charlie likes donuts' LIKE 'Ch%rlie %likes %' AS 'Result 3',
  'Charlie likes donuts' LIKE '% likes %' AS 'Result 4';

Hasil:

+----------+----------+----------+----------+
| Result 1 | Result 2 | Result 3 | Result 4 |
+----------+----------+----------+----------+
|        1 |        1 |        1 |        1 |
+----------+----------+----------+----------+

Mari kita buat beberapa perubahan pada contoh itu sehingga kita dapat melihat beberapa contoh ketika mereka tidak cocok:

SELECT 
  'Charlie likes donuts' LIKE 'Ch%rlie_donuts' AS 'Result 1',
  'Charlie likes donuts' LIKE 'Charlie_nuts' AS 'Result 2',
  'Charlie likes donuts' LIKE 'Charlie _likes donuts' AS 'Result 3',
  'Charlie likes donuts' LIKE '_ likes _' AS 'Result 4';

Hasil:

+----------+----------+----------+----------+
| Result 1 | Result 2 | Result 3 | Result 4 |
+----------+----------+----------+----------+
|        0 |        0 |        0 |        0 |
+----------+----------+----------+----------+

Contoh 3 – Contoh Basis Data

LIKE operator sering digunakan dalam WHERE klausa dari SELECT pernyataan ketika menanyakan database. Saat digunakan dengan cara ini, hasil akan dipersempit menjadi hanya catatan yang cocok, tetapi kami melihat hasil sebenarnya (bukan hanya 1 atau 0 ).

Berikut adalah contoh bagaimana kita dapat menggunakan operator ini dalam query database:

SELECT ArtistId, ArtistName
FROM Artists
WHERE ArtistName LIKE 'B%';

Hasil:

+----------+----------------+
| ArtistId | ArtistName     |
+----------+----------------+
|        4 | Buddy Rich     |
|       11 | Black Sabbath  |
|       15 | Birds of Tokyo |
|       16 | Bodyjar        |
+----------+----------------+

Dalam hal ini, itu adalah kueri sederhana yang mengembalikan semua artis yang namanya dimulai dengan huruf B .

Berikut daftar lengkap artis di tabel itu:

SELECT ArtistId, ArtistName
FROM Artists;

Hasil:

+----------+------------------------+
| ArtistId | ArtistName             |
+----------+------------------------+
|        1 | Iron Maiden            |
|        2 | AC/DC                  |
|        3 | Allan Holdsworth       |
|        4 | Buddy Rich             |
|        5 | Devin Townsend         |
|        6 | Jim Reeves             |
|        7 | Tom Jones              |
|        8 | Maroon 5               |
|        9 | The Script             |
|       10 | Lit                    |
|       11 | Black Sabbath          |
|       12 | Michael Learns to Rock |
|       13 | Carabao                |
|       14 | Karnivool              |
|       15 | Birds of Tokyo         |
|       16 | Bodyjar                |
+----------+------------------------+

Contoh 4 – Escape dengan Karakter Backslash

Apa yang terjadi jika salah satu karakter wildcard ada di string input Anda dan Anda perlu mencocokkannya? Anda dapat menghindarinya dengan karakter garis miring terbalik (\ ). Berikut ini contoh penelusuran dengan dan tanpa karakter escape:

SELECT 
  'usr_123' LIKE 'usr_123' AS 'Without escape',
  'usr_123' LIKE 'usr\_123' AS 'With escape';

Hasil:

+----------------+-------------+
| Without escape | With escape |
+----------------+-------------+
|              1 |           1 |
+----------------+-------------+

Dalam hal ini, keduanya cocok, tetapi untuk alasan yang berbeda. Baris pertama cocok karena karakter pengganti menentukan bahwa karakter apa pun akan cocok. Baris kedua juga cocok, tetapi hanya karena string input kebetulan memiliki garis bawah di tempat yang tepat.

Mari kita ubah sedikit string input sehingga kita mendapatkan hasil yang berbeda:

SELECT 
  'usr+123' LIKE 'usr_123' AS 'Without escape',
  'usr+123' LIKE 'usr\_123' AS 'With escape';

Hasil:

+----------------+-------------+
| Without escape | With escape |
+----------------+-------------+
|              1 |           0 |
+----------------+-------------+

Versi unescaped kembali positif, karena wildcard berarti kita dapat memiliki karakter apa pun di tempat itu. Versi yang lolos secara eksplisit menyatakan bahwa hanya karakter garis bawah (_ ) akan cocok. String input tidak memiliki karakter garis bawah di tempat itu sehingga hasilnya negatif.

Contoh 5 – ESCAPE Klausa

Anda juga dapat menggunakan ESCAPE klausa untuk menentukan karakter escape kustom Anda sendiri. Ini contohnya:

SELECT 
  'usr_123' LIKE 'usr|_123' ESCAPE '|' AS 'String 1',
  'usr+123' LIKE 'usr|_123' ESCAPE '|' AS 'String 2';

Hasil:

+----------+----------+
| String 1 | String 2 |
+----------+----------+
|        1 |        0 |
+----------+----------+

Contoh 6 – Ekspresi Numerik

Implementasi MySQL dari LIKE operator memungkinkan ekspresi numerik untuk digunakan. Ini contohnya:

SELECT 
  1234 LIKE '12%',
  1234 LIKE '12_';

Hasil:

+-----------------+-----------------+
| 1234 LIKE '12%' | 1234 LIKE '12_' |
+-----------------+-----------------+
|               1 |               0 |
+-----------------+-----------------+

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cara menginstal MySQL di Windows

  2. Kinerja MySQL:MyISAM vs InnoDB

  3. Apa yang Harus Diperiksa jika Pemanfaatan Memori MySQL Tinggi?

  4. Gunakan Database Relasional MySQL di Ubuntu 9.10 (Karmic)

  5. PDOException SQLSTATE[HY000] [2002] Tidak ada file atau direktori seperti itu