Предикат подобия
Функция
Определение сравнения на соответствие шаблону.
Спецификация
::=
::=
Синтаксические правила
-
Конструкция:
<символьное выражение> NOT LIKE <шаблон>
эквивалентна:
NOT (<символьное выражение> LIKE <шаблон>).
-
Если
не указан, то символ подчеркивания (_) в <шаблоне> представляет собой указатель на произвольный символ в <символьном выражении>, знак процента (%) в <шаблоне> представляет указатель на подстроку (возможно, пустую), а каждый символ в <шаблоне>, отличный от знаков подчеркивания и процента, представляет сам себя.select distinct make from auto where upper(make) LIKE ('%MOTOR%'); |AMERICAN MOTORS | |GENERAL MOTORS |
select distinct bodytype from auto where upper(bodytype) LIKE ('_E%'); |SEDAN | |SEDAN HARDTOP |
-
<Символьное выражение>
может быть
или приводиться к нему. -
<Символьное выражение>
может быть символьным константным выражением, символьным параметром, значимым символьным выражением или их комбинацией.Запрос с константным выражением:
select distinct make, bodytype from auto where bodytype like ('SE'||'DAN'||'%');
Запрос с параметром:
select distinct make, bodytype from auto where bodytype like ('SE'||'DAN'||?);
Запрос с символьной функцией:
select * from auto where serialno LIKE 'L9791' + substr(serialno,6);
-
используется для отмены действия специальных символов _ и %. -
В обычном режиме символ обратного слэша «\» по умолчанию является ESC-символом, в режиме /COMPATIBILITY=STANDARD ESC-символа по умолчанию нет.
-
Если
задан, то комбинация
,_
,%
в<шаблоне>
указывает на то, что специальные символы _ , %,
должны представлять самих себя.Найти все записи, в которых название организации начинается с АОЗТ_:
select count(1) from "Организации" where upper("Название") like 'АОЗТ/_%' escape '/';
-
Строка шаблона должна гарантировать ее разбивку на следующие последовательности:
-
одиночные не
; -
+ '%'; -
+ '_'; -
+ .
Т.е. после
, которому не предшествует
, не может стоять символ конца строки или обычный символ, а могут только '%', '_' и
. -
-
Если
<символьное выражение>
имеет NULL-значение, то результатом предиката будет ложь (FALSE). -
Конструкция
<символьное выражение> LIKE <шаблон>
истинна (TRUE), если<символьное выражение>
соответствует шаблону, и ложна (FALSE) – в противном случае.SELECT "Название" FROM "Организации" WHERE "Название" LIKE('%О_%') or "Название" LIKE('%Т_%');
-
Если типом данных
<шаблона>
является UNICODE, то<символьное выражение>
также по возможности приводится к этому типу. -
Если в качестве
задана UNICODE-константа, то второй байт у этой константы должен быть нулевым. -
При трансляции запроса с предикатом LIKE выполняется проверка аргумента на правильность использования
.create or replace table ttt3(c char(10) check (c like 'a~qaa' escape '~')); create or replace table ttt3(c char(10) check (c like 'a~_aa' escape '~')); create or replace table ttt3(c char(10) check (c like 'a~%aa' escape '~')); create or replace table ttt3(c char(10) check (c like 'a~~aa' escape '~')); insert into ttt3 values ('aaa'); !914: запись не удовлетворяет условию CHECK insert into ttt3 values ('a~qaa'); !914: запись не удовлетворяет условию CHECK insert into ttt3 values ('aqaa'); !914: запись не удовлетворяет условию CHECK insert into ttt3 values (' '); !914: запись не удовлетворяет условию CHECK insert into ttt3 values ('a~aa'); !ok insert into ttt3 values (NULL); !ok drop table ttt3;