sql >> Databáze >  >> RDS >> SQLite

SQLite LIKE

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 _ :

  1. Znak procenta % zástupný znak odpovídá jakékoli sekvenci nula nebo více znaků.
  2. 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 (_ ).


  1. Úvod do SQL Serveru

  2. pg_ctl Tipy a triky

  3. SELECT nebo PERFORM ve funkci PL/pgSQL

  4. PHP PDO připravené výpisy