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 | +-----------------+-----------------+