sql >> Database >  >> RDS >> SQLite

SQLite Like()-functie met voorbeelden

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 patroon
  • Y is de tekenreeks
  • Z 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.


  1. NLS_UPPER() Functie in Oracle

  2. Cassandra maskeren met IRI FieldShield

  3. Waarom heeft een Oracle plsql varchar2-variabele een grootte nodig, maar een parameter niet?

  4. 10 seconden toevoegen in current_timestamp SQL (Oracle)