Shrnutí :v tomto tutoriálu se naučíte, jak dotazovat data na základě shody vzorů pomocí SQLite LIKE operátor.
Úvod do SQLite LIKE operátor
Někdy neznáte přesně celé klíčové slovo, na které se chcete dotazovat. Můžete například vědět, že vaše nejoblíbenější skladba obsahuje slovo elevator ale neznáte přesné jméno.
Chcete-li se dotazovat na data na základě dílčích informací, použijte LIKE operátor v WHERE klauzule SELECT prohlášení takto:
SELECT
column_list
FROM
table_name
WHERE
column_1 LIKE pattern;Code language: SQL (Structured Query Language) (sql)
Všimněte si, že můžete také použít LIKE operátor v WHERE klauzule jiných příkazů, jako je DELETE a UPDATE .
SQLite poskytuje dva zástupné znaky pro vytváření vzorů. Jsou to znak procenta % a podtržítko _ :
- Znak procenta
%zástupný znak odpovídá jakékoli sekvenci nula nebo více znaků. - Podtržítko
_zástupný znak odpovídá libovolnému jednotlivému znaku.
Znak procenta % příklady zástupných znaků
s% vzor, který používá zástupný znak procenta ( % ) odpovídá libovolnému řetězci, který začíná s např. son a so .
%er vzor odpovídá libovolnému řetězci, který končí er jako peter , clever , atd.
A %per% vzor odpovídá libovolnému řetězci, který obsahuje per například percent a peeper .
Podtržítko _ příklady zástupných znaků
h_nt vzor odpovídá hunt , hint , atd. __pple vzor odpovídá topple , supple , tipple , atd.
Všimněte si, že SQLite LIKE operátor nerozlišuje velká a malá písmena. Znamená to "A" LIKE "a" je pravda.
Pro znaky Unicode, které nejsou v rozsahu ASCII, však LIKE operátor rozlišuje malá a velká písmena, např. "Ä" LIKE "ä" je nepravdivé.
V případě, že chcete dát LIKE Operátor pracuje s rozlišením velkých a malých písmen, musíte použít následující PRAGMA:
PRAGMA case_sensitive_like = true;Code language: SQL (Structured Query Language) (sql) SQLite LIKE příklady
Použijeme tabulku tracks ve vzorové databázi pro ukázku.
Chcete-li najít skladby, jejichž názvy začínají Wild doslovný řetězec, použijete znak procenta % zástupný znak na konci vzoru.
SELECT
trackid,
name
FROM
tracks
WHERE
name LIKE 'Wild%'Code language: SQL (Structured Query Language) (sql) Zkuste to
Chcete-li najít skladby, jejichž názvy končí Wild slovo, používáte % zástupný znak na začátku vzoru.
SELECT
trackid,
name
FROM
tracks
WHERE
name LIKE '%Wild'Code language: SQL (Structured Query Language) (sql) Zkuste to
Chcete-li najít skladby, jejichž názvy obsahují Wild doslovný řetězec, použijete % zástupný znak na začátku a na konci vzoru:
SELECT
trackid,
name
FROM
tracks
WHERE
name LIKE '%Wild%';Code language: SQL (Structured Query Language) (sql) Zkuste to
Následující příkaz najde skladby, jejichž názvy obsahují:žádný nebo více znaků (% ), následovaný Br , za kterým následuje znak ( _ ), za kterým následuje wn a následuje nula nebo více znaků ( % ).
SELECT
trackid,
name
FROM
tracks
WHERE
name LIKE '%Br_wn%';Code language: SQL (Structured Query Language) (sql) Zkuste to
SQLite LIKE pomocí ESCAPE klauzule
Pokud vzor, který chcete porovnat, obsahuje % nebo _ , musíte použít znak escape ve volitelném ESCAPE doložka takto:
column_1 LIKE pattern ESCAPE expression;
Code language: SQL (Structured Query Language) (sql)
Když zadáte ESCAPE klauzule LIKE operátor vyhodnotí expression který následuje po ESCAPE klíčové slovo na řetězec, který se skládá z jednoho znaku nebo znaku escape.
Potom můžete tento znak escape ve vzoru použít k zahrnutí doslovného znaku procenta (%) nebo podtržítka (_ ). LIKE operátor vyhodnotí znak procenta (% ) nebo podtržítko (_ ), který následuje za znakem escape jako doslovný řetězec, nikoli zástupný znak.
Předpokládejme, že chcete odpovídat řetězci 10% ve sloupci tabulky. SQLite však interpretuje symbol procenta % jako zástupný znak. Proto musíte tento symbol procenta % opustit pomocí znaku escape:
column_1 LIKE '%10\%%' ESCAPE '\';Code language: SQL (Structured Query Language) (sql)
V tomto výrazu LIKE operátor interpretuje první znak % a poslední znak % procenta jako zástupné znaky a druhý znak procenta jako doslovný symbol procenta.
Upozorňujeme, že jako únikový znak můžete použít i jiné znaky, např. /, @, $.
Zvažte následující příklad:
Nejprve vytvořte tabulku t který má jeden sloupec:
CREATE TABLE t(
c TEXT
);Code language: SQL (Structured Query Language) (sql)
Dále vložte několik řádků do tabulky 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)
Poté zadejte dotaz na data z t tabulka:
SELECT * FROM t;Code language: SQL (Structured Query Language) (sql) c
----------------------
10% increase
10 times decrease
100% vs. last year
20% increase next yearCode language: Shell Session (shell)
Za čtvrté, pokuste se najít řádek, jehož hodnota je v c sloupec obsahuje 10% doslovný řetězec:
SELECT c
FROM t
WHERE c LIKE '%10%%';Code language: SQL (Structured Query Language) (sql) Vrátí však řádky, jejichž hodnoty ve sloupci c obsahují 10:
c
------------------
10% increase
10 times decrease
100% vs. last year
Za páté, abyste získali správný výsledek, použijte ESCAPE klauzule, jak je znázorněno v následujícím dotazu:
SELECT c
FROM t
WHERE c LIKE '%10\%%' ESCAPE '\';Code language: SQL (Structured Query Language) (sql) Zde je sada výsledků:
c
------------
10% increaseCode language: Shell Session (shell)
V tomto tutoriálu jste se naučili používat SQLite LIKE operátor k dotazování na data na základě shody vzorů pomocí dvou zástupných znaků znak procenta (% ) a podtržítko (_ ).