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 vzorY
je řetězecZ
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.