Предикат подобия
Функция
Определение сравнения на соответствие шаблону.
Спецификация
::=
::=
::=
Синтаксические правила
-
Конструкция:
<символьное выражение> NOT LIKE <шаблон>
эквивалентна:
NOT (<символьное выражение> LIKE <шаблон>).
-
Если
<ESC-символ>
не указан, то символ подчеркивания (_) в <шаблоне> представляет собой указатель на произвольный символ в <символьном выражении>, знак процента (%) в <шаблоне> представляет указатель на подстроку (возможно, пустую), а каждый символ в <шаблоне>, отличный от знаков подчеркивания и процента, представляет сам себя.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 |
-
<Символьное выражение>
может быть<UNICODE-типом>
или приводиться к нему. -
<Символьное выражение>
может быть символьным константным выражением, символьным параметром, значимым символьным выражением или их комбинацией.Запрос с константным выражением:
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-символ>
используется для отмены действия специальных символов _ и %. -
В обычном режиме символ обратного слэша «\» по умолчанию является ESC-символом, в режиме /COMPATIBILITY=STANDARD ESC-символа по умолчанию нет.
-
Если
<ESC-символ>
задан, то комбинация<ESC-символ>_
,<ESC-символ>%
,<ESC-символ><ESC-символ>
в<шаблоне>
указывает на то, что специальные символы _ , %,<ESC-символ>
должны представлять самих себя.Найти все записи, в которых название организации начинается с АОЗТ_:
select count(1) from "Организации" where upper("Название") like 'АОЗТ/_%' escape '/';
-
Строка шаблона должна гарантировать ее разбивку на следующие последовательности:
-
одиночные не
<ESC-символы>
; -
<ESC> + '%';
-
<ESC> + '_';
-
<ESC> + <ESC>.
То есть после
<ESC-символа>
, которому не предшествует<ESC-символ>
, не может стоять символ конца строки или обычный символ, а могут только '%', '_' и<ESC-символ>
. -
-
Если
<символьное выражение>
имеет NULL-значение, то результатом предиката будет ложь (FALSE). -
Конструкция
<символьное выражение> LIKE <шаблон>
истинна (TRUE), если<символьное выражение>
соответствует шаблону, и ложна (FALSE) – в противном случае.SELECT "Название" FROM "Организации" WHERE "Название" LIKE('%О_%') or "Название" LIKE('%Т_%');
-
Если типом данных
<шаблона>
является UNICODE, то<символьное выражение>
также по возможности приводится к этому типу. -
Если в качестве
<ESC-символа>
задана UNICODE-константа, то второй байт у этой константы должен быть нулевым. -
При трансляции запроса с предикатом LIKE выполняется проверка аргумента на правильность использования
<ESC-символа>
.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;