Podsumowanie :w tym samouczku dowiesz się, jak wysyłać zapytania o dane w oparciu o dopasowanie wzorców za pomocą SQLite LIKE
operatora.
Wprowadzenie do SQLite LIKE
operator
Czasami nie znasz dokładnie całego słowa kluczowego, którego chcesz użyć. Na przykład możesz wiedzieć, że Twoja ulubiona piosenka zawiera słowo elevator
ale nie znasz dokładnie nazwy.
Aby zapytać o dane na podstawie częściowych informacji, użyj LIKE
operator w WHERE
klauzula SELECT
oświadczenie w następujący sposób:
SELECT
column_list
FROM
table_name
WHERE
column_1 LIKE pattern;
Code language: SQL (Structured Query Language) (sql)
Pamiętaj, że możesz również użyć LIKE
operator w WHERE
klauzula innych instrukcji, takich jak DELETE
i UPDATE
.
SQLite udostępnia dwa symbole wieloznaczne do konstruowania wzorców. Są to znak procentowy %
i podkreśl _
:
- Znak procentu
%
symbol wieloznaczny pasuje do dowolnej sekwencji zerowej lub większej liczby znaków. - Podkreślenie
_
symbol wieloznaczny pasuje do dowolnego pojedynczego znaku.
Znak procentu %
przykłady symboli wieloznacznych
s%
wzorzec, który używa symbolu wieloznacznego znaku procentu ( %
) pasuje do dowolnego ciągu, który zaczyna się od s
np. son
i so
.
%er
wzorzec pasuje do dowolnego ciągu, który kończy się na er
jak peter
, clever
itp.
Oraz %per%
wzorzec pasuje do dowolnego ciągu, który zawiera per
np. percent
i peeper
.
Podkreślenie _
przykłady symboli wieloznacznych
h_nt
wzorzec pasuje do hunt
, hint
itp. __pple
wzorzec pasuje do topple
, supple
, tipple
itp.
Zauważ, że SQLite LIKE
operator nie rozróżnia wielkości liter. Oznacza "A" LIKE "a"
to prawda.
Jednak w przypadku znaków Unicode, które nie znajdują się w zakresach ASCII, LIKE
operator rozróżnia wielkość liter, np. "Ä" LIKE "ä"
to fałsz.
Jeśli chcesz zrobić LIKE
operator działa z uwzględnieniem wielkości liter, należy użyć następującej PRAGMY:
PRAGMA case_sensitive_like = true;
Code language: SQL (Structured Query Language) (sql)
SQLite LIKE
przykłady
Użyjemy tabeli tracks
w przykładowej bazie danych do demonstracji.
Aby znaleźć utwory, których nazwy zaczynają się od Wild
literał ciągu, użyj znaku procentu %
symbol wieloznaczny na końcu wzorca.
SELECT
trackid,
name
FROM
tracks
WHERE
name LIKE 'Wild%'
Code language: SQL (Structured Query Language) (sql)
Wypróbuj
Aby znaleźć utwory, których nazwy kończą się na Wild
słowo, używasz %
symbol wieloznaczny na początku wzorca.
SELECT
trackid,
name
FROM
tracks
WHERE
name LIKE '%Wild'
Code language: SQL (Structured Query Language) (sql)
Wypróbuj
Aby znaleźć utwory, których nazwy zawierają Wild
literał ciągu, używasz %
symbol wieloznaczny na początku i na końcu wzorca:
SELECT
trackid,
name
FROM
tracks
WHERE
name LIKE '%Wild%';
Code language: SQL (Structured Query Language) (sql)
Wypróbuj
Poniższa instrukcja wyszukuje utwory, których nazwy zawierają:zero lub więcej znaków (%
), a następnie Br
, po którym następuje znak ( _
), po którym następuje wn
, po którym następuje zero lub więcej znaków ( %
).
SELECT
trackid,
name
FROM
tracks
WHERE
name LIKE '%Br_wn%';
Code language: SQL (Structured Query Language) (sql)
Wypróbuj
SQLite LIKE
z ESCAPE
klauzula
Jeśli wzorzec, który chcesz dopasować zawiera %
lub _
, musisz użyć znaku ucieczki w opcjonalnym ESCAPE
klauzula w następujący sposób:
column_1 LIKE pattern ESCAPE expression;
Code language: SQL (Structured Query Language) (sql)
Gdy określisz ESCAPE
klauzula LIKE
operator oceni expression
który następuje po ESCAPE
słowo kluczowe do łańcucha, który składa się z jednego znaku lub znaku zmiany znaczenia.
Następnie możesz użyć tego znaku zmiany znaczenia we wzorcu, aby dołączyć dosłowny znak procentu (%) lub podkreślenie (_
). LIKE
operator oblicza znak procentu (%
) lub podkreślenie (_
), który następuje po znaku ucieczki jako dosłowny ciąg, a nie symbol wieloznaczny.
Załóżmy, że chcesz dopasować ciąg 10%
w kolumnie tabeli. Jednak SQLite interpretuje symbol procentu %
jako symbol wieloznaczny. Dlatego musisz zmienić znaczenie symbolu procentu %
za pomocą znaku ucieczki:
column_1 LIKE '%10\%%' ESCAPE '\';
Code language: SQL (Structured Query Language) (sql)
W tym wyrażeniu LIKE
operator interpretuje pierwszy i ostatni znak procentu % jako symbol wieloznaczny, a drugi znak procenta jako dosłowny symbol procenta.
Pamiętaj, że możesz użyć innych znaków jako znaku ucieczki, np. /, @, $.
Rozważ następujący przykład:
Najpierw utwórz tabelę t
który ma jedną kolumnę:
CREATE TABLE t(
c TEXT
);
Code language: SQL (Structured Query Language) (sql)
Następnie wstaw kilka wierszy do tabeli 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)
Następnie zapytaj o dane z t
tabela:
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)
Po czwarte, spróbuj znaleźć wiersz, którego wartość w c
kolumna zawiera 10%
dosłowny ciąg:
SELECT c
FROM t
WHERE c LIKE '%10%%';
Code language: SQL (Structured Query Language) (sql)
Zwraca jednak wiersze, których wartości w kolumnie c zawierają 10:
c
------------------
10% increase
10 times decrease
100% vs. last year
Po piąte, aby uzyskać poprawny wynik, użyj ESCAPE
klauzula, jak pokazano w następującym zapytaniu:
SELECT c
FROM t
WHERE c LIKE '%10\%%' ESCAPE '\';
Code language: SQL (Structured Query Language) (sql)
Oto zestaw wyników:
c
------------
10% increase
Code language: Shell Session (shell)
W tym samouczku nauczyłeś się korzystać z SQLite LIKE
operator do zapytania o dane na podstawie dopasowania wzorca za pomocą dwóch znaków wieloznacznych znaku procentu (%
) i podkreślenie (_
).