SQLite like()
функцията ви позволява да сравните низ с даден шаблон. Можете също да посочите escape знак, ако е необходимо.
Можете да използвате like()
функционира като алтернатива на LIKE
оператор (който ви позволява да стартирате Y LIKE X [ESCAPE Z]
израз).
Синтаксис
Можете да използвате едно от следните:
like(X,Y)
like(X,Y,Z)
X
е моделътY
е низътZ
е незадължителен escape знак
Основен пример
Вземете следната таблица:
CatId CatName ---------- ---------- 1 Brush 2 Flutter 3 100%Fluff 4 100$Fluff
Можем да изпълним следния код, за да върнем всички редове, където името на котката започва с буквата F:
SELECT * FROM Cats
WHERE like('F%', CatName);
Резултат:
CatId CatName ---------- ---------- 3 Flutter
В този пример използвах %
заместващ знак, който указва произволен брой знаци, които могат да следват (включително нула знаци) и че те могат да бъдат всеки знак.
Символът за долна черта (_)
Ето пример, който използва долната черта (_
) характер. Този заместващ знак съответства точно на един знак – нито повече, нито по-малко.
SELECT * FROM Cats
WHERE like('Br_sh', CatName);
Резултат:
CatId CatName ---------- ---------- 1 Brush
Както споменахме, съвпада само с един знак. Така че, въз основа на моите данни, не мога да направя следното и да очаквам съвпадения.
SELECT * FROM Cats
WHERE like('Br_', CatName);
Резултат:
(Това е умишлено празно поради липса на резултати).
Екраниращи символи
Можете също да избягвате знаци, ако е необходимо. За да направите това, добавете escape символа като трети параметър (и също го добавете преди знака, който искате да избягате).
SELECT * FROM Cats
WHERE like('100\%F%', CatName, '\');
Резултат:
CatId CatName ---------- ---------- 3 100%Fluff
В този случай избягах знака за процент (%
). Направих това, защото търсех котки, които имат действителен процентен знак в имената си. Всъщност в този случай търсех много конкретно име на котка – такова, което започва с 100%F .
Ако не бях избягал от това, щеше да се използва като заместващ знак и резултатите щяха да са различни.
Ето какво получавам, когато премахна escape знака.
SELECT * FROM Cats
WHERE like('100%F%', CatName);
Резултат:
CatId CatName ---------- ---------- 3 100%Fluff 4 100$Fluff
Връщане на булева стойност
Можете да използвате like()
функция за връщане на 0 или 1 , в зависимост от това дали има съвпадение или не.
Това може да е удобно, ако трябва да върнете всички редове, но също и с флаг, който показва дали отговарят на вашите критерии или не.
Ето един пример.
SELECT
CatName,
like('F%', CatName)
FROM Cats;
Резултат:
CatName CatName LIKE 'F%' ---------- ------------------ Brush 0 Flutter 1 100%Fluff 0 100$Fluff 0
В този случай само един ред отговаряше на критериите, но все пак трябва да видим всички останали редове.
Чувствителност на главни и малки букви
По подразбиране SQLite like()
функцията е независимо от главните букви за ASCII знаци. Това означава, че ще съвпада с главни и малки букви, независимо кой регистър използвате във вашия шаблон.
Можете да използвате case_sensitive_like Инструкция PRAGMA за извършване на съвпадения, чувствителни към малки и големи букви в диапазона ASCII.
Вижте как да направите оператора LIKE на SQLite чувствителен към малки букви за примери. Тази статия е написана за LIKE
оператор, но се отнася и за like()
функция.