sql >> Databasteknik >  >> RDS >> SQLite

SQLite Like() Funktion med exempel

SQLite like() funktionen gör att du kan jämföra en sträng mot ett givet mönster. Du kan även ange ett escape-tecken om det behövs.

Du kan använda like() fungerar som ett alternativ till LIKE operator (som gör att du kan köra Y LIKE X [ESCAPE Z] uttryck).

Syntax

Du kan använda något av följande:

like(X,Y)
like(X,Y,Z)
  • X är mönstret
  • Y är strängen
  • Z är ett valfritt escape-tecken

Grundläggande exempel

Ta följande tabell:

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

Vi kan köra följande kod för att returnera alla rader där kattens namn börjar med bokstaven F:

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

Resultat:

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

I det här exemplet använde jag % jokertecken för att indikera valfritt antal tecken som kan följa (inklusive noll tecken), och att de kan vara vilket tecken som helst.

Understreckets (_) karaktär

Här är ett exempel som använder understrecket (_ ) karaktär. Detta jokertecken matchar exakt ett tecken – varken mer eller mindre.

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

Resultat:

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

Som nämnts matchar den bara ett enda tecken. Så baserat på mina uppgifter kan jag inte göra följande och förvänta mig några matchningar.

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

Resultat:

 

(Detta är avsiktligt tomt på grund av inga resultat).

Escape-tecken

Du kan också escape tecken om det behövs. För att göra detta, lägg till escape-tecknet som en tredje parameter (och lägg även till det före tecknet som du vill escape).

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

Resultat:

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

I det här fallet undkom jag procenttecknet (% ). Jag gjorde detta för att jag letade efter katter som hade ett verkligt procenttecken i sina namn. I det här fallet sökte jag faktiskt efter ett mycket specifikt kattnamn – ett som börjar med 100%F .

Om jag inte hade undgått det, skulle det ha använts som ett jokertecken, och resultaten skulle ha blivit annorlunda.

Det här är vad jag får när jag tar bort escape-karaktären.

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

Resultat:

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

Returnera ett booleskt värde

Du kan använda like() funktion för att returnera en 0 eller 1 , beroende på om det finns en matchning eller inte.

Detta kan vara praktiskt om du behöver returnera alla rader, men också med en flagga som visar om de matchar dina kriterier eller inte.

Här är ett exempel.

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

Resultat:

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

I det här fallet matchade bara en rad kriterierna, men vi fick ändå se alla andra rader.

Skiftlägeskänslighet

Som standard är SQLite like() Funktionen är skiftlägeskänslig för ASCII-tecken. Det betyder att den matchar versaler och gemener, oavsett vilket skiftläge du använder i ditt mönster.

Du kan använda case_sensitive_like PRAGMA-sats för att utföra skiftlägeskänsliga matchningar i ASCII-intervallet.

Se hur man gör SQLites LIKE-operatör skiftlägeskänslig för exempel. Den artikeln är skriven för LIKE operatorn, men den gäller även för like() funktion.


  1. är det möjligt att ha alfanumerisk sekvensgenerator i sql

  2. Dynamisk SQL (passerar tabellnamnet som parameter)

  3. 4 funktioner för att returnera månaden från ett datum i MariaDB

  4. Hur man använder Coalesce Function i Oracle