Oversigt :i denne øvelse lærer du, hvordan du forespørger data baseret på mønstermatchning ved hjælp af SQLite LIKE
operatør.
Introduktion til SQLite LIKE
operatør
Nogle gange kender du ikke nøjagtigt det komplette søgeord, du vil forespørge på. For eksempel ved du måske, at din mest yndlingssang indeholder ordetelevator
men du kender ikke lige navnet.
For at forespørge data baseret på delvise oplysninger, bruger du LIKE
operator i WHERE
klausul af SELECT
erklæring som følger:
SELECT
column_list
FROM
table_name
WHERE
column_1 LIKE pattern;
Code language: SQL (Structured Query Language) (sql)
Bemærk, at du også kan bruge LIKE
operator i WHERE
klausul i andre udsagn, såsom DELETE
og UPDATE
.
SQLite giver to jokertegn til at konstruere mønstre. De er procenttegn %
og understreg _
:
- Procenttegnet
%
jokertegn matcher enhver sekvens på nul eller flere tegn. - Understregningen
_
jokertegn matcher ethvert enkelt tegn.
Procenttegnet %
eksempler på jokertegn
s%
mønster, der bruger jokertegnet for procenttegn ( %
) matcher enhver streng, der starter med s
f.eks. son
og so
.
%er
mønster matcher enhver streng, der ender med er
som peter
, clever
osv.
Og %per%
mønster matcher enhver streng, der indeholder per
såsom percent
og peeper
.
Understregningen _
eksempler på jokertegn
h_nt
mønster matcher hunt
, hint
osv. __pple
mønster matcher topple
, supple
, tipple
, etc.
Bemærk at SQLite LIKE
operatøren skelner mellem store og små bogstaver. Det betyder "A" LIKE "a"
er sandt.
For Unicode-tegn, der ikke er i ASCII-intervallerne, er LIKE
operatoren skelner mellem store og små bogstaver, f.eks. "Ä" LIKE "ä"
er falsk.
Hvis du vil lave LIKE
operatøren fungerer case-sensitive, du skal bruge følgende PRAGMA:
PRAGMA case_sensitive_like = true;
Code language: SQL (Structured Query Language) (sql)
SQLite LIKE
eksempler
Vi bruger tabellen tracks
i prøvedatabasen til demonstrationen.
For at finde de spor, hvis navne starter med Wild
bogstavelig streng, bruger du procenttegnet %
jokertegn i slutningen af mønsteret.
SELECT
trackid,
name
FROM
tracks
WHERE
name LIKE 'Wild%'
Code language: SQL (Structured Query Language) (sql)
Prøv det
For at finde de spor, hvis navne slutter med Wild
ord, bruger du %
jokertegn i begyndelsen af mønsteret.
SELECT
trackid,
name
FROM
tracks
WHERE
name LIKE '%Wild'
Code language: SQL (Structured Query Language) (sql)
Prøv det
For at finde de spor, hvis navne indeholder Wild
bogstavelig streng, bruger du %
jokertegn i begyndelsen og slutningen af mønsteret:
SELECT
trackid,
name
FROM
tracks
WHERE
name LIKE '%Wild%';
Code language: SQL (Structured Query Language) (sql)
Prøv det
Følgende sætning finder de spor, hvis navne indeholder:nul eller flere tegn (%
), efterfulgt af Br
, efterfulgt af et tegn ( _
), efterfulgt af wn
, og efterfulgt af nul eller flere tegn ( %
).
SELECT
trackid,
name
FROM
tracks
WHERE
name LIKE '%Br_wn%';
Code language: SQL (Structured Query Language) (sql)
Prøv det
SQLite LIKE
med ESCAPE
klausul
Hvis det mønster, du vil matche, indeholder %
eller _
, skal du bruge et escape-tegn i en valgfri ESCAPE
klausul som følger:
column_1 LIKE pattern ESCAPE expression;
Code language: SQL (Structured Query Language) (sql)
Når du angiver ESCAPE
klausulen, LIKE
operatør vil evaluere expression
der følger ESCAPE
nøgleord til en streng, der består af et enkelt tegn, eller et escape-tegn.
Så kan du bruge dette escape-tegn i mønsteret til at inkludere bogstaveligt procenttegn (%) eller understregning (_
). LIKE
operatoren evaluerer procenttegnet (%
) eller understregning (_
), der følger escape-tegnet som en bogstavelig streng, ikke et jokertegn.
Antag, at du vil matche strengen 10%
i en kolonne i en tabel. SQLite fortolker dog procentsymbolet %
som jokertegn. Derfor skal du undslippe dette procentsymbol %
ved hjælp af et escape-tegn:
column_1 LIKE '%10\%%' ESCAPE '\';
Code language: SQL (Structured Query Language) (sql)
I dette udtryk er LIKE
operatoren fortolker det første % og sidste % procenttegn som jokertegn og det andet procenttegn som et bogstaveligt procentsymbol.
Bemærk, at du kan bruge andre tegn som escape-tegn, f.eks. /, @, $.
Overvej følgende eksempel:
Først skal du oprette en tabel t
der har én kolonne:
CREATE TABLE t(
c TEXT
);
Code language: SQL (Structured Query Language) (sql)
Indsæt derefter nogle rækker 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)
Forespørg derefter data fra t
tabel:
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)
For det fjerde, forsøg at finde den række, hvis værdi i c
kolonnen indeholder 10%
bogstavelig streng:
SELECT c
FROM t
WHERE c LIKE '%10%%';
Code language: SQL (Structured Query Language) (sql)
Det returnerer dog rækker, hvis værdier i c-kolonnen indeholder 10:
c
------------------
10% increase
10 times decrease
100% vs. last year
For det femte, for at få det korrekte resultat, bruger du ESCAPE
klausul som vist i følgende forespørgsel:
SELECT c
FROM t
WHERE c LIKE '%10\%%' ESCAPE '\';
Code language: SQL (Structured Query Language) (sql)
Her er resultatsættet:
c
------------
10% increase
Code language: Shell Session (shell)
I denne øvelse har du lært, hvordan du bruger SQLite LIKE
operatør til at forespørge data baseret på mønstermatchning ved hjælp af to jokertegn procenttegn (%
) og understregning (_
).