SQLite
 sql >> Baza danych >  >> RDS >> SQLite

Funkcja SQLite Like() z przykładami

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 wzorem
  • Y jest ciągiem
  • Z 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.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. sqlite:jak dodać całkowity czas gg:mm:ss gdzie typ danych kolumny to DATETIME?

  2. Jak dołączyć plik .db z innym Androidem .apk?

  3. Automatyczne zwiększanie wartości „id” podczas wstawiania do sqlite

  4. Indeks oparty na wyrażeniach SQLite

  5. Usuń duplikaty z wyników Count() w SQLite