Функция производит сравнение с шаблоном, используя операции сравнения
простых регулярных выражений в SQL. Возвращает 1 (ИСТИНА) или 0 (ЛОЖЬ).
Выражение LIKE предусматривает использование следующих двух шаблонных
символов в pat:
Символ | Описание
|
% | Соответствует любому количеству символов, даже нулевых
|
_ | Соответствует ровно одному символу
|
mysql> SELECT 'David!' LIKE 'David_';
-> 1
mysql> SELECT 'David!' LIKE '%D%v%';
-> 1
Если требуется исследовать литералы при помощи шаблонного символа, следует
предварить шаблонный символ экранирующим символом. Если экранирующий
символ конкретно не указывается, то подразумевается применение символа
`\':
Строка | Описание
|
\% | Соответствует одному символу `%'
|
\_ | Соответствует одному символу `_'
|
mysql> SELECT 'David!' LIKE 'David\_';
-> 0
mysql> SELECT 'David_' LIKE 'David\_';
-> 1
Для указания конкретного экранирующего символа используется выражение
ESCAPE:
mysql> SELECT 'David_' LIKE 'David|_' ESCAPE '|';
-> 1
В следующих двух примерах показано, что сравнение строк производится с
учетом регистра, если ни один из операндов не является строкой с двоичными
данными:
mysql> SELECT 'abc' LIKE 'ABC';
-> 1
mysql> SELECT 'abc' LIKE BINARY 'ABC';
-> 0
В функции LIKE допускаются даже числовые выражения! (Это расширение MySQL
по сравнению с ANSI SQL LIKE.)
mysql> SELECT 10 LIKE '1%';
-> 1
Примечание: поскольку в MySQL применяются правила экранирования в строках,
применяемые в языке C (например, `\n'), необходимо дублировать все символы
`\', используемые в строках функции LIKE. Например, для поиска сочетания
символов `\n' его необходимо указать как `\\n'. Чтобы выполнить поиск
символа `\', он должен быть указан как `\\\\' (обратные слеши удаляются
дважды: сначала синтаксическим анализатором, а потом - при выполнении
сравнения с шаблоном, таким образом остается только один обратный слеш,
который и будет обрабатываться).