In SQLite kun je de LIKE
. gebruiken operator in uw zoekopdrachten om een patroonovereenkomst te vergelijken.
U kunt het bijvoorbeeld toevoegen aan uw WHERE
clausule om alleen rijen te retourneren die overeenkomen met een bepaald patroon.
Voeg het echter toe aan de WHERE
clausule is niet de enige manier waarop u de LIKE
. kunt gebruiken exploitant. Je kunt het ook gebruiken om een booleaanse waarde te retourneren.
Basisvoorbeeld
Hier is een eenvoudig voorbeeld dat de LIKE
. gebruikt operator in een WHERE
clausule.
SELECT * FROM Artist
WHERE Name LIKE 'Black%';
Resultaat:
ArtistId Name ---------- ------------------- 11 Black Label Society 12 Black Sabbath 169 Black Eyed Peas
In dit geval wilde ik alle artiesten teruggeven wiens naam begint met Black .
Het percentageteken is een jokerteken dat overeenkomt met nul of meer van een willekeurig teken (inclusief spaties).
Zonder het jokerteken
Als ik het jokerteken niet had gebruikt, zou ik geen resultaten hebben gekregen.
Hier is een voorbeeld van wat ik bedoel:
SELECT * FROM Artist
WHERE Name LIKE 'Black';
Resultaat:
(Dat is opzettelijk blanco, omdat er geen resultaten waren.)
Meerdere jokertekens
U kunt indien nodig meer dan één jokerteken gebruiken. In dit voorbeeld voeg ik er nog een toe aan de voorkant van mijn patroon.
SELECT * FROM Artist
WHERE Name LIKE '%Black%';
Resultaat:
ArtistId Name ---------- ------------------- 11 Black Label Society 12 Black Sabbath 38 Banda Black Rio 137 The Black Crowes 169 Black Eyed Peas
Dit resulteert in meer rijen die worden geretourneerd, omdat er twee rijen zijn met Zwart in hun naam, maar gewoon niet aan het begin.
Het onderstrepingsteken (_) jokerteken
Je hebt ook de mogelijkheid om het onderstrepingsteken te gebruiken (_
) jokerteken.
Dit jokerteken komt exact overeen met één teken (elk teken).
Beschouw de volgende tabel met de naam Katten :
CatId CatName ---------- ---------- 1 Brush 2 Brash 3 Broosh 4 100%Fluff 5 100$Fluff
Ja, sommige van die katten hebben rare namen, maar ze zullen van pas komen.
Hier is een voorbeeld van het gebruik van het underscore-jokerteken in een zoekopdracht voor die tabel.
SELECT * FROM Cats
WHERE CatName LIKE 'Br_sh';
Resultaat:
CatId CatName ---------- ---------- 1 Brush 2 Brash
Merk op dat de kat genaamd Broosh is niet inbegrepen.
Om Broosh op te nemen , zou ik twee onderstrepingstekens moeten gebruiken:
SELECT * FROM Cats
WHERE CatName LIKE 'Br__sh';
Resultaat:
CatId CatName ---------- ---------- 3 Broosh
Dit sluit echter de andere twee katten uit.
Ik zou altijd een percentageteken kunnen gebruiken om de andere katten op te nemen.
SELECT * FROM Cats
WHERE CatName LIKE 'Br%sh';
Resultaat:
CatId CatName ---------- ---------- 1 Brush 2 Brash 3 Broosh
Houd er echter rekening mee dat dit ook namen oplevert met meer dan twee tekens tussen Br en sh .
De ESCAPE-clausule
Soms bevatten uw gegevens zelfs de jokertekens. Met andere woorden, de gegevens bevatten onderstrepingstekens of percentagetekens.
Dit kan een probleem zijn als u het onderstrepingsteken of het percentageteken daadwerkelijk probeert te gebruiken als letterlijk teken en niet als jokerteken.
In mijn kattentabel zul je zien dat één kat een percentageteken in zijn naam heeft. Een andere kat heeft bijna exact dezelfde naam, behalve dat het in plaats van een procentteken een dollarteken is.
Hier is de tabel weer:
CatId CatName ---------- ---------- 1 Brush 2 Brash 3 Broosh 4 100%Fluff 5 100$Fluff
Als ik alleen die katten wilde retourneren waarvan de namen beginnen met 100%F dan zou ik moeten ontsnappen aan de % . Als ik hier niet aan zou ontsnappen, zou ik ongewenste resultaten krijgen.
Dit is wat er gebeurt als ik een zoekopdracht uitvoer zonder ontsnappen aan het procentteken.
SELECT * FROM Cats
WHERE CatName LIKE '100%F';
Resultaat:
CatId CatName ---------- ---------- 4 100%Fluff 5 100$Fluff
In dit geval kwam het percentageteken ook overeen met het dollarteken, omdat het percentageteken werd behandeld als een jokerteken.
Om ervoor te zorgen dat het procentteken niet als een jokerteken wordt behandeld, kunnen we de ESCAPE
gebruiken clausule.
SELECT * FROM Cats
WHERE CatName LIKE '100\%%F' ESCAPE '\';
Resultaat:
CatId CatName ---------- ---------- 4 100%Fluff
Retourneer een Booleaanse waarde
U kunt de LIKE
. gebruiken operator om een 0 . te retourneren of 1 , afhankelijk van of er een match is of niet.
Hier is een voorbeeld.
SELECT
CatName,
CatName LIKE 'Br%'
FROM Cats;
Resultaat:
CatName CatName LIKE 'Br%' ---------- ------------------ Brush 1 Brash 1 Broosh 1 100%Fluff 0 100$Fluff 0
In dit geval voldoen de eerste drie rijen aan de criteria en de laatste twee rijen niet.
Hoofdlettergevoeligheid
Standaard is de SQLite LIKE
operator is niet hoofdlettergevoelig voor ASCII-tekens. Dit betekent dat het overeenkomt met hoofdletters en kleine letters, ongeacht welke hoofdletters je in je patroon gebruikt.
U kunt de case_sensitive_like . gebruiken PRAGMA-instructie om hoofdlettergevoelige overeenkomsten in het ASCII-bereik uit te voeren.
Zie Hoe u de LIKE-operator van SQLite hoofdlettergevoelig maakt voor voorbeelden.
De Like()-functie
Een alternatieve manier om dit te doen is door de like()
. te gebruiken functie.
Deze functie doet precies hetzelfde als de LIKE
operator, behalve dat u een iets andere syntaxis moet gebruiken.
Alle bovenstaande voorbeelden kunnen worden herschreven om de like()
. te gebruiken functie indien nodig.