Доступные версии документации

Предикат подобия

Функция

Определение сравнения на соответствие шаблону.

Спецификация
 
Синтаксические правила
  1. Конструкция:

    <символьное выражение> NOT LIKE <шаблон> 

    эквивалентна:

    NOT (<символьное выражение> LIKE <шаблон>).
  2. Если <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   |
  3. <Символьное выражение> может быть <UNICODE-типом> или приводиться к нему.

  4. <Символьное выражение> может быть символьным константным выражением, символьным параметром, значимым символьным выражением или их комбинацией.

    Запрос с константным выражением:

    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);
  5. <ESC-символ> используется для отмены действия специальных символов _ и %.

  6. По умолчанию используется ESC-символ «\».

  7. Если <ESC-символ> задан, то комбинация <ESC-символ>_, <ESC-символ>%, <ESC-символ><ESC-символ> в <шаблоне> указывает на то, что специальные символы _ , %, <ESC-символ> должны представлять самих себя.

    Найти все записи, в которых название организации начинается с АОЗТ_:

    select count(1) from "Организации"
    where upper("Название") like 'АОЗТ/_%' escape '/';
  8. Строка шаблона должна гарантировать ее разбивку на следующие последовательности:

    • одиночные не <ESC-символы>;

    • <ESC> + '%';

    • <ESC> + '_';

    • <ESC> + <ESC>.

    Т.е. после <ESC-символа>, которому не предшествует <ESC-символ>, не может стоять символ конца строки или обычный символ, а могут только '%', '_' и <ESC-символ>.

  9. Если <символьное выражение> имеет NULL-значение, то результатом предиката будет ложь (FALSE).

  10. Конструкция <символьное выражение> LIKE <шаблон> истинна (TRUE), если <символьное выражение> соответствует шаблону, и ложна (FALSE) – в противном случае.

    SELECT "Название" FROM "Организации" WHERE
    "Название" LIKE('%О_%') or "Название" LIKE('%Т_%');
  11. Если типом данных <шаблона> является UNICODE, то <символьное выражение> также по возможности приводится к этому типу.

  12. Если в качестве <ESC-символа> задана UNICODE-константа, то второй байт у этой константы должен быть нулевым.

  13. При трансляции запроса с предикатом 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;
Заметили ошибку?
Выделите текст и нажмите Ctrl + Enter