Sammanfattning :i den här handledningen kommer du att lära dig hur du frågar efter data baserat på mönstermatchning med SQLite LIKE
operatör.
Introduktion till SQLite LIKE
operatör
Ibland vet du inte exakt det fullständiga sökordet som du vill fråga. Du kanske till exempel vet att din favoritlåt innehåller ordetelevator
men du vet inte exakt namnet.
För att fråga data baserat på partiell information använder du LIKE
operatorn i WHERE
satsen i SELECT
uttalande enligt följande:
SELECT
column_list
FROM
table_name
WHERE
column_1 LIKE pattern;
Code language: SQL (Structured Query Language) (sql)
Observera att du också kan använda LIKE
operatorn i WHERE
satsen i andra satser som DELETE
och UPDATE
.
SQLite tillhandahåller två jokertecken för att konstruera mönster. De är procenttecken %
och understreck _
:
- Procenttecknet
%
jokertecken matchar en sekvens med noll eller fler tecken. - Understrecket
_
jokertecken matchar alla enstaka tecken.
Procenttecknet %
exempel på jokertecken
s%
mönster som använder jokertecken för procenttecknet ( %
) matchar alla strängar som börjar med s
t.ex. son
och so
.
%er
mönster matchar alla strängar som slutar med er
som peter
, clever
, etc.
Och %per%
mönster matchar alla strängar som innehåller per
såsom percent
och peeper
.
Understrecket _
exempel på jokertecken
h_nt
mönster matchar hunt
, hint
, etc. __pple
mönster matchar topple
, supple
, tipple
, etc.
Observera att SQLite LIKE
operatören är skiftlägeskänslig. Det betyder "A" LIKE "a"
är sant.
Men för Unicode-tecken som inte är i ASCII-intervallen, LIKE
operatorn är skiftlägeskänslig, t.ex. "Ä" LIKE "ä"
är falskt.
Om du vill göra LIKE
operatören fungerar skiftlägeskänsligt, du måste använda följande PRAGMA:
PRAGMA case_sensitive_like = true;
Code language: SQL (Structured Query Language) (sql)
SQLite LIKE
exempel
Vi använder tabellen tracks
i exempeldatabasen för demonstrationen.
För att hitta spåren vars namn börjar med Wild
bokstavlig sträng använder du procenttecknet %
jokertecken i slutet av mönstret.
SELECT
trackid,
name
FROM
tracks
WHERE
name LIKE 'Wild%'
Code language: SQL (Structured Query Language) (sql)
Prova det
För att hitta spåren vars namn slutar med Wild
ord använder du %
jokertecken i början av mönstret.
SELECT
trackid,
name
FROM
tracks
WHERE
name LIKE '%Wild'
Code language: SQL (Structured Query Language) (sql)
Prova det
För att hitta spåren vars namn innehåller Wild
bokstavlig sträng använder du %
jokertecken i början och slutet av mönstret:
SELECT
trackid,
name
FROM
tracks
WHERE
name LIKE '%Wild%';
Code language: SQL (Structured Query Language) (sql)
Prova det
Följande sats hittar de spår vars namn innehåller:noll eller fler tecken (%
), följt av Br
, följt av ett tecken ( _
), följt av wn
, och följt av noll eller fler tecken ( %
).
SELECT
trackid,
name
FROM
tracks
WHERE
name LIKE '%Br_wn%';
Code language: SQL (Structured Query Language) (sql)
Prova det
SQLite LIKE
med ESCAPE
klausul
Om mönstret som du vill matcha innehåller %
eller _
, måste du använda ett escape-tecken i en valfri ESCAPE
klausul enligt följande:
column_1 LIKE pattern ESCAPE expression;
Code language: SQL (Structured Query Language) (sql)
När du anger ESCAPE
satsen, LIKE
operatören kommer att utvärdera expression
som följer ESCAPE
nyckelord till en sträng som består av ett enda tecken, eller ett escape-tecken.
Sedan kan du använda detta escape-tecken i mönstret för att inkludera bokstavligt procenttecken (%) eller understreck (_
). LIKE
operatorn utvärderar procenttecknet (%
) eller understreck (_
) som följer escape-tecknet som en bokstavlig sträng, inte ett jokertecken.
Anta att du vill matcha strängen 10%
i en kolumn i en tabell. Däremot tolkar SQLite procentsymbolen %
som jokertecken. Därför måste du undkomma denna procentsymbol %
med ett escape-tecken:
column_1 LIKE '%10\%%' ESCAPE '\';
Code language: SQL (Structured Query Language) (sql)
I det här uttrycket är LIKE
operatorn tolkar de första % och sista % procenttecknen som jokertecken och det andra procenttecknet som en bokstavlig procentsymbol.
Observera att du kan använda andra tecken som escape-tecken, t.ex. /, @, $.
Tänk på följande exempel:
Skapa först en tabell t
som har en kolumn:
CREATE TABLE t(
c TEXT
);
Code language: SQL (Structured Query Language) (sql)
Därefter infogar du några rader i tabellen 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)
Fråga sedan data från t
tabell:
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)
För det fjärde, försök att hitta raden vars värde i c
kolumnen innehåller 10%
bokstavlig sträng:
SELECT c
FROM t
WHERE c LIKE '%10%%';
Code language: SQL (Structured Query Language) (sql)
Det returnerar dock rader vars värden i kolumnen c innehåller 10:
c
------------------
10% increase
10 times decrease
100% vs. last year
För det femte, för att få rätt resultat använder du ESCAPE
klausul som visas i följande fråga:
SELECT c
FROM t
WHERE c LIKE '%10\%%' ESCAPE '\';
Code language: SQL (Structured Query Language) (sql)
Här är resultatuppsättningen:
c
------------
10% increase
Code language: Shell Session (shell)
I den här handledningen har du lärt dig hur du använder SQLite LIKE
operatör för att fråga data baserat på mönstermatchning med två jokertecken procenttecken (%
) och understreck (_
).