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 yearCode 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% increaseCode 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 (_ ).