Предикат подобия
Функция
Определение сравнения на соответствие шаблону.
Спецификация
::=::=::=Синтаксические правила
-
Конструкция:
<символьное выражение> 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=STANDARDESC-символа по умолчанию нет. -
Если
<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;