sql >> Databáze >  >> RDS >> SQLite

Funkce SQLite Like() s příklady

SQLite like() Funkce umožňuje porovnat řetězec s daným vzorem. V případě potřeby můžete také zadat znak escape.

Můžete použít like() fungovat jako alternativa k LIKE operátor (který vám umožňuje spouštět Y LIKE X [ESCAPE Z] výraz).

Syntaxe

Můžete použít některou z následujících možností:

like(X,Y)
like(X,Y,Z)
  • X je vzor
  • Y je řetězec
  • Z je volitelný znak escape

Základní příklad

Vezměte si následující tabulku:

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

Můžeme spustit následující kód, abychom vrátili všechny řádky, kde jméno kočky začíná písmenem F:

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

Výsledek:

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

V tomto příkladu jsem použil % zástupný znak k označení libovolného počtu znaků, které může následovat (včetně nula znaků), a že to může být jakýkoli znak.

Znak podtržítka (_)

Zde je příklad, který používá podtržítko (_ ) charakter. Tento zástupný znak odpovídá přesně jednomu znaku – ne více a nic méně.

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

Výsledek:

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

Jak již bylo zmíněno, odpovídá pouze jednomu znaku. Takže na základě mých údajů nemohu udělat následující a očekávat žádné shody.

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

Výsledek:

 

(Toto je záměrně prázdné, protože nebyly nalezeny žádné výsledky).

Escapování znaků

V případě potřeby můžete také znaky escapovat. Chcete-li to provést, přidejte znak escape jako třetí parametr (a také jej přidejte před znak, který chcete ukončit).

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

Výsledek:

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

V tomto případě jsem vynechal znak procenta (% ). Udělal jsem to, protože jsem hledal kočky, které měly ve svých jménech skutečné procento. Ve skutečnosti jsem v tomto případě hledal velmi konkrétní kočičí jméno – takové, které začíná 100%F .

Kdybych tomu neunikl, byl by použit jako zástupný znak a výsledky by byly jiné.

Zde je to, co dostanu, když odstraním únikový znak.

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

Výsledek:

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

Vrátí booleovskou hodnotu

Můžete použít like() funkce vrátí 0 nebo 1 , v závislosti na tom, zda existuje shoda nebo ne.

To může být užitečné, pokud potřebujete vrátit všechny řádky, ale také s příznakem, který ukazuje, zda odpovídají vašim kritériím.

Zde je příklad.

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

Výsledek:

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

V tomto případě kritériím odpovídal pouze jeden řádek, ale přesto jsme viděli všechny ostatní řádky.

Rozlišování malých a velkých písmen

Ve výchozím nastavení SQLite like() funkce nerozlišuje velká a malá písmena u znaků ASCII. To znamená, že bude odpovídat velkým a malým písmenům, bez ohledu na to, jaká velká a malá písmena ve svém vzoru použijete.

Můžete použít case_sensitive_like Příkaz PRAGMA k provádění shody rozlišující malá a velká písmena v rozsahu ASCII.

Příklady naleznete v části Jak nastavit rozlišení operátora LIKE na velikost písmen SQLite. Tento článek je napsán pro LIKE operátor, ale vztahuje se také na like() funkce.


  1. Jak přidat AM/PM k časové hodnotě na SQL Server (T-SQL)

  2. Flask by example – Nastavení Postgres, SQLAlchemy a Alembic

  3. Jak používat Oracle SQL*Plus

  4. Může MySQL nahradit více znaků?