Di MySQL, Anda dapat menggunakan NOT LIKE
untuk melakukan negasi dari LIKE
operator. Dengan kata lain, NOT LIKE
mengembalikan hasil sebaliknya ke LIKE
.
Jika string cocok dengan pola yang diberikan, hasilnya adalah 0
, jika tidak maka 1
.
Polanya tidak harus berupa string literal. Fungsi ini dapat digunakan dengan ekspresi string dan kolom tabel.
Sintaks
Sintaksnya seperti ini:
expr NOT 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.
Operator ini setara dengan melakukan hal berikut:
NOT (expr LIKE pat [ESCAPE 'escape_char'])
Contoh 1 – Penggunaan Dasar
Berikut adalah contoh cara menggunakan operator ini dalam SELECT
pernyataan:
SELECT 'Charlie' NOT LIKE 'Char%';
Hasil:
+----------------------------+ | 'Charlie' NOT LIKE 'Char%' | +----------------------------+ | 0 | +----------------------------+
Dalam hal ini, nilai yang dikembalikan adalah 0
yang berarti bahwa string input dilakukan benar-benar cocok dengan polanya.
Contoh 2 – Dibandingkan dengan LIKE
Ini dibandingkan dengan LIKE
:
SELECT 'Charlie' LIKE 'Char%' AS 'Like', 'Charlie' NOT LIKE 'Char%' AS 'Not Like';
Hasil:
+------+----------+ | Like | Not Like | +------+----------+ | 1 | 0 | +------+----------+
Contoh 3 – Sintaks yang Setara
Seperti yang disebutkan, NOT LIKE
adalah setara dengan menggunakan NOT
operator logika terhadap LIKE
operator. Inilah yang saya maksud:
SELECT 'Charlie' NOT LIKE 'Char%' AS 'NOT LIKE syntax', NOT ('Charlie' LIKE 'Char%') AS 'Equivalent syntax';
Hasil:
+-----------------+-------------------+ | NOT LIKE syntax | Equivalent syntax | +-----------------+-------------------+ | 0 | 0 | +-----------------+-------------------+
Contoh 4 – Contoh Basis Data
LIKE
operator sering digunakan dalam WHERE
klausa dari SELECT
pernyataan ketika menanyakan database. Oleh karena itu, NOT LIKE
dapat digunakan dengan cara yang sama.
Saat kami menggunakan NOT LIKE
dengan cara ini, ini mempersempit hasil menjadi hanya catatan yang tidak 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 NOT LIKE 'B%';
Hasil:
+----------+------------------------+ | ArtistId | ArtistName | +----------+------------------------+ | 1 | Iron Maiden | | 2 | AC/DC | | 3 | Allan Holdsworth | | 5 | Devin Townsend | | 6 | Jim Reeves | | 7 | Tom Jones | | 8 | Maroon 5 | | 9 | The Script | | 10 | Lit | | 12 | Michael Learns to Rock | | 13 | Carabao | | 14 | Karnivool | +----------+------------------------+
Dalam hal ini, itu adalah kueri sederhana yang mengembalikan semua artis yang namanya tidak mulai 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 | +----------+------------------------+
Jadi jika kita menghapus NOT
(yaitu kami hanya menggunakan LIKE
) kita mendapatkan hasil ini:
SELECT ArtistId, ArtistName FROM Artists WHERE ArtistName LIKE 'B%';
Hasil:
+----------+----------------+ | ArtistId | ArtistName | +----------+----------------+ | 4 | Buddy Rich | | 11 | Black Sabbath | | 15 | Birds of Tokyo | | 16 | Bodyjar | +----------+----------------+
Contoh 5 – Escape dengan Karakter Backslash
Karakter garis miring terbalik (\
) dapat digunakan untuk menghindari salah satu karakter wildcard (_
dan %
). Berikut ini contoh penelusuran dengan dan tanpa karakter escape:
SELECT 'usr+123' NOT LIKE 'usr_123' AS 'Without escape', 'usr+123' NOT LIKE 'usr\_123' AS 'With escape';
Hasil:
+----------------+-------------+ | Without escape | With escape | +----------------+-------------+ | 0 | 1 | +----------------+-------------+
Contoh 6 – ESCAPE
Klausa
Anda juga dapat menggunakan ESCAPE
klausa untuk menentukan karakter escape kustom Anda sendiri. Ini contohnya:
SELECT 'usr_123' NOT LIKE 'usr|_123' ESCAPE '|' AS 'String 1', 'usr+123' NOT LIKE 'usr|_123' ESCAPE '|' AS 'String 2';
Hasil:
+----------+----------+ | String 1 | String 2 | +----------+----------+ | 0 | 1 | +----------+----------+
Contoh 7 – Ekspresi Numerik
Operator ini dapat digunakan pada ekspresi numerik. Ini contohnya:
SELECT 1234 NOT LIKE '12%', 1234 NOT LIKE '12_';
Hasil:
+---------------------+---------------------+ | 1234 NOT LIKE '12%' | 1234 NOT LIKE '12_' | +---------------------+---------------------+ | 0 | 1 | +---------------------+---------------------+