Ringkasan :dalam tutorial ini, Anda akan mempelajari cara membuat kueri data berdasarkan pencocokan pola menggunakan SQLite LIKE
operator.
Pengantar SQLite LIKE
operator
Terkadang, Anda tidak tahu persis kata kunci lengkap yang ingin Anda kueri. Misalnya, Anda mungkin tahu bahwa lagu favorit Anda berisi kata,elevator
tapi Anda tidak tahu persis namanya.
Untuk menanyakan data berdasarkan informasi parsial, gunakan LIKE
operator di WHERE
klausa dari SELECT
pernyataan sebagai berikut:
SELECT
column_list
FROM
table_name
WHERE
column_1 LIKE pattern;
Code language: SQL (Structured Query Language) (sql)
Perhatikan bahwa Anda juga dapat menggunakan LIKE
operator di WHERE
klausa pernyataan lain seperti DELETE
dan UPDATE
.
SQLite menyediakan dua wildcard untuk membangun pola. Mereka adalah tanda persen %
dan garis bawahi _
:
- Tanda persen
%
wildcard cocok dengan urutan nol karakter atau lebih. - Garis bawah
_
wildcard cocok dengan karakter tunggal apa pun.
Tanda persen %
contoh wildcard
s%
pola yang menggunakan wildcard tanda persen ( %
) cocok dengan string apa pun yang dimulai dengan s
misalnya,son
dan so
.
%er
pola cocok dengan string apa pun yang diakhiri dengan er
seperti peter
, clever
, dll.
Dan %per%
pola cocok dengan string apa pun yang berisi per
seperti percent
dan peeper
.
garis bawah _
contoh wildcard
h_nt
pola cocok dengan hunt
, hint
, dll. __pple
pola cocok dengan topple
, supple
, tipple
, dll.
Perhatikan bahwa SQLite LIKE
operator tidak peka huruf besar/kecil. Artinya "A" LIKE "a"
benar.
Namun, untuk karakter Unicode yang tidak berada dalam rentang ASCII, tanda LIKE
operator peka huruf besar/kecil mis., "Ä" LIKE "ä"
adalah palsu.
Jika Anda ingin membuat LIKE
operator bekerja dengan peka huruf besar-kecil, Anda perlu menggunakan PRAGMA berikut:
PRAGMA case_sensitive_like = true;
Code language: SQL (Structured Query Language) (sql)
SQLite LIKE
contoh
Kami akan menggunakan tabel tracks
dalam database sampel untuk demonstrasi.
Untuk menemukan trek yang namanya dimulai dengan Wild
string literal, Anda menggunakan tanda persen %
wildcard di akhir pola.
SELECT
trackid,
name
FROM
tracks
WHERE
name LIKE 'Wild%'
Code language: SQL (Structured Query Language) (sql)
Cobalah
Untuk menemukan trek yang namanya diakhiri dengan Wild
kata, Anda menggunakan %
wildcard di awal pola.
SELECT
trackid,
name
FROM
tracks
WHERE
name LIKE '%Wild'
Code language: SQL (Structured Query Language) (sql)
Cobalah
Untuk menemukan trek yang namanya mengandung Wild
string literal, Anda menggunakan %
wildcard di awal dan akhir pola:
SELECT
trackid,
name
FROM
tracks
WHERE
name LIKE '%Wild%';
Code language: SQL (Structured Query Language) (sql)
Cobalah
Pernyataan berikut menemukan trek yang namanya mengandung:nol atau lebih karakter (%
), diikuti dengan Br
, diikuti oleh karakter ( _
), diikuti oleh wn
, dan diikuti oleh nol atau lebih karakter ( %
).
SELECT
trackid,
name
FROM
tracks
WHERE
name LIKE '%Br_wn%';
Code language: SQL (Structured Query Language) (sql)
Cobalah
SQLite LIKE
dengan ESCAPE
klausa
Jika pola yang ingin Anda cocokkan mengandung %
atau _
, Anda harus menggunakan karakter escape dalam ESCAPE
opsional klausa sebagai berikut:
column_1 LIKE pattern ESCAPE expression;
Code language: SQL (Structured Query Language) (sql)
Saat Anda menentukan ESCAPE
klausa, LIKE
operator akan mengevaluasi expression
yang mengikuti ESCAPE
kata kunci ke string yang terdiri dari satu karakter, atau karakter escape.
Kemudian Anda dapat menggunakan karakter escape ini dalam pola untuk menyertakan tanda persen literal (%) atau garis bawah (_
). LIKE
operator mengevaluasi tanda persen (%
) atau garis bawah (_
) yang mengikuti karakter escape sebagai string literal, bukan karakter wildcard.
Misalkan Anda ingin mencocokkan string 10%
dalam kolom tabel. Namun, SQLite menafsirkan simbol persen %
sebagai karakter wildcard. Oleh karena itu, Anda harus keluar dari simbol persen ini %
menggunakan karakter escape:
column_1 LIKE '%10\%%' ESCAPE '\';
Code language: SQL (Structured Query Language) (sql)
Dalam ekspresi ini, LIKE
operator menafsirkan tanda % pertama dan % terakhir sebagai wildcard dan tanda persen kedua sebagai simbol persen literal.
Perhatikan bahwa Anda dapat menggunakan karakter lain sebagai karakter escape mis., /, @, $.
Perhatikan contoh berikut:
Pertama, buat tabel t
yang memiliki satu kolom:
CREATE TABLE t(
c TEXT
);
Code language: SQL (Structured Query Language) (sql)
Selanjutnya, masukkan beberapa baris ke dalam tabel t
:
INSERT INTO t(c)
VALUES('10% increase'),
('10 times decrease'),
('100% vs. last year'),
('20% increase next year');
Code language: SQL (Structured Query Language) (sql)
Kemudian, kueri data dari t
tabel:
SELECT * FROM t;
Code language: SQL (Structured Query Language) (sql)
c
----------------------
10% increase
10 times decrease
100% vs. last year
20% increase next year
Code language: Shell Session (shell)
Keempat, coba cari baris yang nilainya di c
kolom berisi 10%
string literal:
SELECT c
FROM t
WHERE c LIKE '%10%%';
Code language: SQL (Structured Query Language) (sql)
Namun, ia mengembalikan baris yang nilainya di kolom c berisi 10:
c
------------------
10% increase
10 times decrease
100% vs. last year
Kelima, untuk mendapatkan hasil yang benar, gunakan ESCAPE
klausa seperti yang ditunjukkan dalam kueri berikut:
SELECT c
FROM t
WHERE c LIKE '%10\%%' ESCAPE '\';
Code language: SQL (Structured Query Language) (sql)
Berikut adalah kumpulan hasil:
c
------------
10% increase
Code language: Shell Session (shell)
Dalam tutorial ini, Anda telah mempelajari cara menggunakan SQLite LIKE
operator untuk meminta data berdasarkan pencocokan pola menggunakan tanda persen dua karakter wildcard (%
) dan garis bawah (_
).