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 year
Code 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% increase
Code 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 (_
).