SQLite like()
funkcja umożliwia porównanie ciągu z podanym wzorcem. W razie potrzeby możesz również określić znak ucieczki.
Możesz użyć like()
funkcjonować jako alternatywa dla LIKE
operator (który umożliwia uruchomienie Y LIKE X [ESCAPE Z]
wyrażenie).
Składnia
Możesz użyć jednego z następujących:
like(X,Y)
like(X,Y,Z)
X
jest wzoremY
jest ciągiemZ
jest opcjonalnym znakiem ucieczki
Przykład podstawowy
Weź poniższą tabelę:
CatId CatName ---------- ---------- 1 Brush 2 Flutter 3 100%Fluff 4 100$Fluff
Możemy uruchomić następujący kod, aby zwrócić wszystkie wiersze, w których imię kota zaczyna się na literę F:
SELECT * FROM Cats
WHERE like('F%', CatName);
Wynik:
CatId CatName ---------- ---------- 3 Flutter
W tym przykładzie użyłem %
symbol wieloznaczny wskazujący dowolną liczbę znaków, które mogą wystąpić (w tym zero znaków) i że mogą to być dowolne znaki.
Znak podkreślenia (_)
Oto przykład z podkreśleniem (_
) postać. Ten symbol wieloznaczny pasuje dokładnie do jednego znaku – nie więcej i nie mniej.
SELECT * FROM Cats
WHERE like('Br_sh', CatName);
Wynik:
CatId CatName ---------- ---------- 1 Brush
Jak wspomniano, pasuje tylko do jednego znaku. Tak więc na podstawie moich danych nie mogę wykonać następujących czynności i oczekiwać żadnych dopasowań.
SELECT * FROM Cats
WHERE like('Br_', CatName);
Wynik:
(To jest celowo puste z powodu braku wyników).
Uciekające znaki
W razie potrzeby możesz także uciec od znaków. Aby to zrobić, dodaj znak ucieczki jako trzeci parametr (a także dodaj go przed znakiem, który chcesz zmienić).
SELECT * FROM Cats
WHERE like('100\%F%', CatName, '\');
Wynik:
CatId CatName ---------- ---------- 3 100%Fluff
W tym przypadku uniknąłem znaku procentu (%
). Zrobiłem to, ponieważ szukałem kotów, które miały w imionach rzeczywisty znak procentowy. Właściwie w tym przypadku szukałem bardzo konkretnego imienia kota – takiego, które zaczyna się od 100%F .
Gdybym przed tym nie uniknął, zostałby użyty jako symbol wieloznaczny, a wyniki byłyby inne.
Oto, co otrzymuję po usunięciu znaku ucieczki.
SELECT * FROM Cats
WHERE like('100%F%', CatName);
Wynik:
CatId CatName ---------- ---------- 3 100%Fluff 4 100$Fluff
Zwróć wartość logiczną
Możesz użyć like()
funkcja zwracająca 0 lub 1 , w zależności od tego, czy jest dopasowanie, czy nie.
Może to być przydatne, jeśli chcesz zwrócić wszystkie wiersze, ale także z flagą, która pokazuje, czy spełniają one Twoje kryteria.
Oto przykład.
SELECT
CatName,
like('F%', CatName)
FROM Cats;
Wynik:
CatName CatName LIKE 'F%' ---------- ------------------ Brush 0 Flutter 1 100%Fluff 0 100$Fluff 0
W tym przypadku tylko jeden wiersz odpowiadał kryteriom, ale nadal musieliśmy zobaczyć wszystkie pozostałe wiersze.
Rozróżnianie wielkości liter
Domyślnie SQLite like()
w funkcji nie jest rozróżniana wielkość liter dla znaków ASCII. Oznacza to, że będzie pasował do wielkich i małych liter, niezależnie od tego, jakiej wielkości użyjesz we wzorze.
Możesz użyć case_ sensitive_like Instrukcja PRAGMA do wykonywania dopasowań z rozróżnianiem wielkości liter w zakresie ASCII.
Zobacz Jak sprawić, by operator LIKE SQLite uwzględniał wielkość liter, aby zapoznać się z przykładami. Ten artykuł został napisany dla LIKE
operator, ale dotyczy to także like()
funkcja.