Синтаксис LIKE::= <Выражение для вычисления значения строки> [NOT] LIKE <Выражение для вычисления значения строки> [ESCAPE <символ>] Предикат LIKE сравнивает строку, указанную в первом выражении для вычисления значения строки, называемого проверяемым значением, с шаблоном, который определен во втором выражении для вычисления значения строки. В образце разрешается использовать два трафаретных символа:
§ Символ подчеркивания (_), который можно использовать вместо любого единичного символа в проверяемом значении.
§ Символ процента (%), который заменяет набор любых символов (число символов в наборе может быть от 0 и более) в проверяемом значении.
Если проверяемое значение соответствует образцу с учетом трафаретных символов, то значение предиката равно TRUE. Ниже приводится несколько примеров написания шаблонов.
Шаблон
Описание
'abc%'
Любые строки, которые начинаются с букв "abc".
'abc_'
Строки длиной строго 4 символа, причем первыми символами строки должны быть "abc".
'%z'
Любая последовательность символов, которая обязательно заканчивается символом "z".
'%Rostov%'
Любая последовательность символов, содержащая слово "Rostov" в любом месте строки.
Пример. Найти все корабли, имена классов которых заканчиваются на букву 'о':
SELECT * FROM Ships WHERE class LIKE '%o';
Результатом выполнения запроса будет следующая таблица:
name
class
launched
Haruna
Kongo
Hiei
Kongo
Kirishima
Kongo
Kongo
Kongo
Musashi
Yamato
Yamato
Yamato
Пример. Найти все корабли, имена классов которых заканчиваются на букву 'о', но не на 'go':
SELECT * FROM Ships WHERE class NOT LIKE '%go' AND class LIKE '%o';
name
class
launched
Musashi
Yamato
Yamato
Yamato
Если искомая строка содержит трафаретный символ, то следует задать управляющий символ в предложении ESCAPE. Этот управляющий символ должен использоваться в шаблоне перед трафаретным символом, сообщая о том, что трафаретный символ следует трактовать как обычный символ. Например, если в некотором поле следует отыскать все значения, содержащие символ "_", то шаблон '%_%' приведет к тому, что будут возвращены все записи из таблицы. В данном случае шаблон следует записать следующим образом:
'%#_%' ESCAPE '#'
Для проверки значения на соответствие строке "25%" можно воспользоваться таким предикатом:
LIKE '25|%' ESCAPE '|'
Истинностное значение предиката LIKE присваивается в соответствии со следующими правилами:
§ Если либо проверяемое значение, либо образец, либо управляющий символ равен NULL, истинностное значение равно UNKNOWN.
§ В противном случае, если проверяемое значение и образец имеют нулевую длину, истинностное значение равно TRUE.
§ В противном случае, если проверяемое значение соответствует шаблону, то предикат LIKE равен TRUE.
§ Если не соблюдается ни одно из перечисленных выше условий, предикат LIKE равен FALSE.