sql >> Database teknologi >  >> RDS >> SQLite

SQLite Like() Funktion med eksempler

SQLite like() funktionen giver dig mulighed for at sammenligne en streng med et givet mønster. Du kan også angive et escape-tegn, hvis det kræves.

Du kan bruge like() fungere som et alternativ til LIKE operator (som giver dig mulighed for at køre Y LIKE X [ESCAPE Z] udtryk).

Syntaks

Du kan bruge en af ​​følgende:

like(X,Y)
like(X,Y,Z)
  • X er mønsteret
  • Y er strengen
  • Z er et valgfrit escape-tegn

Grundlæggende eksempel

Tag følgende tabel:

CatId       CatName   
----------  ----------
1           Brush     
2           Flutter   
3           100%Fluff 
4           100$Fluff 

Vi kan køre følgende kode for at returnere alle rækker, hvor kattens navn starter med bogstavet F:

SELECT * FROM Cats 
WHERE like('F%', CatName);

Resultat:

CatId       CatName   
----------  ----------
3           Flutter   

I dette eksempel brugte jeg % jokertegn for at angive et hvilket som helst antal tegn, der kan følge (inklusive nul tegn), og at de kan være et hvilket som helst tegn.

Understregningstegn (_)

Her er et eksempel, der bruger understregningen (_ ) Karakter. Dette jokertegn matcher nøjagtigt ét tegn – hverken mere eller mindre.

SELECT * FROM Cats 
WHERE like('Br_sh', CatName);

Resultat:

CatId       CatName   
----------  ----------
1           Brush     

Som nævnt matcher den kun et enkelt tegn. Så baseret på mine data kan jeg ikke gøre følgende og forvente nogen match.

SELECT * FROM Cats 
WHERE like('Br_', CatName);

Resultat:

 

(Dette er bevidst tomt på grund af ingen resultater).

Undslippende tegn

Du kan også undslippe tegn, hvis det kræves. For at gøre dette skal du tilføje escape-tegnet som en tredje parameter (og også tilføje det før det tegn, du vil escape).

SELECT * FROM Cats 
WHERE like('100\%F%', CatName, '\');

Resultat:

CatId       CatName   
----------  ----------
3           100%Fluff 

I dette tilfælde undslap jeg procenttegnet (% ). Jeg gjorde dette, fordi jeg ledte efter katte, der havde et faktisk procenttegn i deres navne. Faktisk søgte jeg i dette tilfælde efter et meget specifikt kattenavn – et der begynder med 100%F .

Hvis jeg ikke var sluppet for det, ville det være blevet brugt som et jokertegn, og resultaterne ville have været anderledes.

Her er, hvad jeg får, når jeg fjerner escape-karakteren.

SELECT * FROM Cats 
WHERE like('100%F%', CatName);

Resultat:

CatId       CatName   
----------  ----------
3           100%Fluff 
4           100$Fluff 

Returner en boolesk værdi

Du kan bruge like() funktion for at returnere et 0 eller 1 , alt efter om der er et match eller ej.

Dette kan være praktisk, hvis du skal returnere alle rækker, men også med et flag, der viser, om de matcher dine kriterier eller ej.

Her er et eksempel.

SELECT 
  CatName,
  like('F%', CatName) 
FROM Cats;

Resultat:

CatName     CatName LIKE 'F%'
----------  ------------------
Brush       0                 
Flutter     1                 
100%Fluff   0                 
100$Fluff   0                 

I dette tilfælde matchede kun én række kriterierne, men vi fik stadig set alle de andre rækker.

Skabsfølsomhed

Som standard er SQLite like() funktionen er ufølsom for store og små bogstaver for ASCII-tegn. Det betyder, at det vil matche store og små bogstaver, uanset hvilket bogstav du bruger i dit mønster.

Du kan bruge case_sensitive_like PRAGMA-erklæring til at udføre store og små bogstaver match i ASCII-området.

Se, hvordan du gør SQLites LIKE-operatør følsomme for store og små bogstaver for eksempler. Denne artikel er skrevet til LIKE operatoren, men den gælder også for like() funktion.


  1. Hvorfor bruger Oracle DBMS_STATS.GATHER_TABLE_STATS?

  2. Hvad er JDBC-modstykket til Postgres' \connect-kommando?

  3. Nysgerrig problem med Oracle UNION og ORDER BY

  4. SQL Server-afhængigheder