SQLite
 sql >> база данни >  >> RDS >> SQLite

Функция SQLite Like() с примери

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() функция.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Извличане на база данни или друг файл от вътрешната памет с помощта на run-as

  2. Как да инсталирате SQLite на macOS

  3. SQLite Python

  4. Как да актуализирате и изтриете списъка Преглед на данни в SQLite база данни с слушател на щракване?

  5. Как да филтрирате във връзка едно към много с android room db