De SQLite like()
functie stelt u in staat om een string te vergelijken met een bepaald patroon. U kunt indien nodig ook een escape-teken opgeven.
U kunt de like()
. gebruiken functioneren als een alternatief voor de LIKE
operator (waarmee u de Y LIKE X [ESCAPE Z]
uitdrukking).
Syntaxis
U kunt een van de volgende gebruiken:
like(X,Y)
like(X,Y,Z)
X
is het patroonY
is de tekenreeksZ
is een optioneel escape-teken
Basisvoorbeeld
Neem de volgende tabel:
CatId CatName ---------- ---------- 1 Brush 2 Flutter 3 100%Fluff 4 100$Fluff
We kunnen de volgende code uitvoeren om alle rijen terug te geven waar de naam van de kat begint met de letter F:
SELECT * FROM Cats
WHERE like('F%', CatName);
Resultaat:
CatId CatName ---------- ---------- 3 Flutter
In dit voorbeeld heb ik de %
. gebruikt jokerteken om aan te geven dat er een willekeurig aantal tekens kan volgen (inclusief nul tekens), en dat ze elk willekeurig teken kunnen zijn.
Het onderstrepingsteken (_) teken
Hier is een voorbeeld dat het onderstrepingsteken gebruikt (_
) karakter. Dit jokerteken komt overeen met precies één teken - niet meer en niet minder.
SELECT * FROM Cats
WHERE like('Br_sh', CatName);
Resultaat:
CatId CatName ---------- ---------- 1 Brush
Zoals vermeld, komt het slechts overeen met een enkel teken. Dus op basis van mijn gegevens kan ik het volgende niet doen en verwacht ik geen overeenkomsten.
SELECT * FROM Cats
WHERE like('Br_', CatName);
Resultaat:
(Dit is opzettelijk blanco omdat er geen resultaten zijn).
Ontsnappende tekens
U kunt indien nodig ook tekens escapen. Om dit te doen, voegt u het escape-teken toe als derde parameter (en voegt u het ook toe vóór het teken dat u wilt escapen).
SELECT * FROM Cats
WHERE like('100\%F%', CatName, '\');
Resultaat:
CatId CatName ---------- ---------- 3 100%Fluff
In dit geval ben ik ontsnapt aan het procentteken (%
). Ik deed dit omdat ik op zoek was naar katten met een echt percentageteken in hun naam. In dit geval was ik eigenlijk op zoek naar een heel specifieke kattennaam - een naam die begint met 100%F .
Als ik daar niet aan was ontsnapt, zou het als een joker zijn gebruikt en zouden de resultaten anders zijn geweest.
Dit krijg ik als ik het escape-teken verwijder.
SELECT * FROM Cats
WHERE like('100%F%', CatName);
Resultaat:
CatId CatName ---------- ---------- 3 100%Fluff 4 100$Fluff
Retourneer een Booleaanse waarde
U kunt de like()
. gebruiken functie om een 0 . terug te geven of 1 , afhankelijk van of er een match is of niet.
Dit kan handig zijn als u alle rijen moet retourneren, maar ook met een vlag die aangeeft of ze al dan niet aan uw criteria voldoen.
Hier is een voorbeeld.
SELECT
CatName,
like('F%', CatName)
FROM Cats;
Resultaat:
CatName CatName LIKE 'F%' ---------- ------------------ Brush 0 Flutter 1 100%Fluff 0 100$Fluff 0
In dit geval voldeed slechts één rij aan de criteria, maar we kregen nog steeds alle andere rijen te zien.
Hoofdlettergevoeligheid
Standaard is de SQLite like()
functie 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. Dat artikel is geschreven voor de LIKE
operator, maar het is ook van toepassing op de like()
functie.