Samenvatting :in deze zelfstudie leert u hoe u gegevens kunt opvragen op basis van patroonovereenkomst met behulp van SQLite LIKE
telefoniste.
Inleiding tot SQLite LIKE
telefoniste
Soms weet u niet precies het volledige zoekwoord dat u wilt opvragen. U weet bijvoorbeeld misschien dat uw meest favoriete nummer het woord elevator
. bevat maar je weet de naam niet precies.
Als u gegevens wilt opvragen op basis van gedeeltelijke informatie, gebruikt u de LIKE
operator in de WHERE
clausule van de SELECT
verklaring als volgt:
SELECT
column_list
FROM
table_name
WHERE
column_1 LIKE pattern;
Code language: SQL (Structured Query Language) (sql)
Merk op dat je ook de LIKE
. kunt gebruiken operator in de WHERE
clausule van andere instructies zoals de DELETE
en UPDATE
.
SQLite biedt twee jokertekens voor het construeren van patronen. Ze zijn procentteken %
en onderstreping _
:
- Het procentteken
%
wildcard komt overeen met een reeks van nul of meer tekens. - Het onderstrepingsteken
_
jokerteken komt overeen met elk afzonderlijk teken.
Het procentteken %
voorbeelden van jokertekens
De s%
patroon dat het jokerteken procentteken gebruikt ( %
) komt overeen met elke tekenreeks die begint met s
bijv.,son
en so
.
De %er
patroon komt overeen met elke tekenreeks die eindigt op er
zoals peter
, clever
, enz.
En de %per%
patroon komt overeen met elke tekenreeks die per
. bevat zoals percent
en peeper
.
Het onderstrepingsteken _
voorbeelden van jokertekens
De h_nt
patroon komt overeen met hunt
, hint
, enz. De __pple
patroon komt overeen met topple
, supple
, tipple
, enzovoort.
Merk op dat SQLite LIKE
operator is niet hoofdlettergevoelig. Het betekent "A" LIKE "a"
is waar.
Voor Unicode-tekens die niet in het ASCII-bereik liggen, wordt de LIKE
operator is hoofdlettergevoelig, bijv. "Ä" LIKE "ä"
is fout.
Als je LIKE
. wilt maken operator werkt hoofdlettergevoelig, u moet de volgende PRAGMA gebruiken:
PRAGMA case_sensitive_like = true;
Code language: SQL (Structured Query Language) (sql)
SQLite LIKE
voorbeelden
We gebruiken de tabel tracks
in de voorbeelddatabase voor de demonstratie.
Om de nummers te vinden waarvan de naam begint met de Wild
letterlijke tekenreeks, gebruik je het procentteken %
jokerteken aan het einde van het patroon.
SELECT
trackid,
name
FROM
tracks
WHERE
name LIKE 'Wild%'
Code language: SQL (Structured Query Language) (sql)
Probeer het
Om de nummers te vinden waarvan de naam eindigt op Wild
woord, gebruik je %
jokerteken aan het begin van het patroon.
SELECT
trackid,
name
FROM
tracks
WHERE
name LIKE '%Wild'
Code language: SQL (Structured Query Language) (sql)
Probeer het
Om de tracks te vinden waarvan de namen de Wild
bevatten letterlijke tekenreeks, gebruik je %
jokerteken aan het begin en einde van het patroon:
SELECT
trackid,
name
FROM
tracks
WHERE
name LIKE '%Wild%';
Code language: SQL (Structured Query Language) (sql)
Probeer het
De volgende instructie vindt de tracks waarvan de namen bevatten:nul of meer tekens (%
), gevolgd door Br
, gevolgd door een teken ( _
), gevolgd door wn
, en gevolgd door nul of meer tekens ( %
).
SELECT
trackid,
name
FROM
tracks
WHERE
name LIKE '%Br_wn%';
Code language: SQL (Structured Query Language) (sql)
Probeer het
SQLite LIKE
met ESCAPE
clausule
Als het patroon dat u wilt matchen %
. bevat of _
, moet u een escape-teken gebruiken in een optionele ESCAPE
clausule als volgt:
column_1 LIKE pattern ESCAPE expression;
Code language: SQL (Structured Query Language) (sql)
Wanneer u de ESCAPE
. specificeert clausule, de LIKE
operator evalueert de expression
die volgt op de ESCAPE
trefwoord naar een tekenreeks die uit een enkel teken bestaat, of een escape-teken.
Vervolgens kunt u dit escape-teken in het patroon gebruiken om een letterlijk procentteken (%) of onderstrepingsteken (_
) op te nemen ). De LIKE
operator evalueert het procentteken (%
) of onderstrepingsteken (_
) dat het escape-teken volgt als een letterlijke tekenreeks, geen jokerteken.
Stel dat u wilt overeenkomen met de tekenreeks 10%
in een kolom van een tabel. SQLite interpreteert echter het procentteken %
als het jokerteken. Daarom moet u ontsnappen aan dit procentteken %
een escape-teken gebruiken:
column_1 LIKE '%10\%%' ESCAPE '\';
Code language: SQL (Structured Query Language) (sql)
In deze uitdrukking is de LIKE
operator interpreteert het eerste % en het laatste % procentteken als jokertekens en het tweede procentteken als een letterlijk procentteken.
Merk op dat u andere tekens als escape-teken kunt gebruiken, bijvoorbeeld /, @, $.
Beschouw het volgende voorbeeld:
Maak eerst een tabel t
die één kolom heeft:
CREATE TABLE t(
c TEXT
);
Code language: SQL (Structured Query Language) (sql)
Voeg vervolgens enkele rijen toe aan de tabel 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)
Vraag vervolgens gegevens op uit de t
tafel:
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)
Ten vierde, probeer de rij te vinden waarvan de waarde in de c
kolom bevat de 10%
letterlijke tekenreeks:
SELECT c
FROM t
WHERE c LIKE '%10%%';
Code language: SQL (Structured Query Language) (sql)
Het retourneert echter rijen waarvan de waarden in de c-kolom 10 bevatten:
c
------------------
10% increase
10 times decrease
100% vs. last year
Ten vijfde, om het juiste resultaat te krijgen, gebruikt u de ESCAPE
clausule zoals getoond in de volgende vraag:
SELECT c
FROM t
WHERE c LIKE '%10\%%' ESCAPE '\';
Code language: SQL (Structured Query Language) (sql)
Hier is de resultatenset:
c
------------
10% increase
Code language: Shell Session (shell)
In deze zelfstudie hebt u geleerd hoe u SQLite LIKE
. gebruikt operator om gegevens op te vragen op basis van patroonovereenkomst met twee jokertekens procentteken (%
) en onderstrepingsteken (_
).