Галерея
7757 8119 8300 8698 8817 9504 9722 9937
Интересные записи
Топовые новости
Новое

Оператор LIKE


Оператор LIKE

Оператор LIKE позволяет указывать в предложении WHERE строковый шаблон для проверки на совпадение в инструкциях SELECT, INSERT, UPDATE и DELETE. Строковый шаблон может включать обобщающие символы. Конкретные обобщающие символы на разных платформах могут быть разные.

Синтаксис SQL 2003

WHERE выражение [NOT] LIKE строковый_шаблон [ESCAPE отменяющая_последовательность].

Ключевые слова

WHERE выражение LIKE.

Возвращает булево значение ИСТИНА, если значение выражения соответствует строковому_шаблону. Выражение может представлять собой столбец, константу, хост-переменную, скалярную функцию или их комбинацию. Оно не может представлять собой пользовательский тип или некоторые виды объектов LOB.

NOT

Инвертирует предложение. Возвращается булево значение ИСТИНА, если значение выражения не совпадает со строковым_шаблоном, и ЛОЖЬ, если совпадает.

ESCAPE отменяющая_последовательность

Позволяет включать в поиск символы, которые в обычных условиях интерпретировались бы как обобщающие символы.


Общие правила

Проверка по строковым шаблонам в предложении LIKE довольно проста, но есть несколько правил, которые нужно запомнить.

  • Значимыми являются все символы, включая пробелы перед строкой и после нее.
  • С помощью предложения LIKE можно сравнивать разные типы данных, но строки в них хранятся по-разному. В частности, вы должны знать о различиях между типами данных CHAR, VARCHAR и DATE.
  • Использование предложения LIKE может заставить систему отказаться от использования индексов или использовать альтернативные, менее оптимальные индексы, чем при простой операции сравнения.

Стандарт ANSI в настоящее время поддерживает два обобщающих оператора, которые поддерживаются всеми платформами, описываемыми в этой книге.

%

Соответствует любой строке.

_ (символ подчеркивания)

Соответствует одному любому символу.

В следующем примере первый запрос извлекает все записи о городах, в имени которых содержится фрагмент «ville». Второй запрос возвращает записи об авторах, имя которых не похоже на Sheryl или Cheryl (а также Aheryl, Bheryl, Dheryl, 2heryl и тому подобное).

SELECT *
FROM authors
WHERE city LIKE ‘%ville%’;

SELECT *
FROM authors
WHERE au_fname NOT LIKE ‘_heryl’;

Некоторые платформы поддерживают дополнительные обобщающие символы. Они описываются ниже, в разделах, посвященных конкретным платформам.

Использование предложения ESCAPE позволяет проводить поиск по обобщающим символам, имеющимся в строках в вашей базе данных. При использовании этого механизма вы обозначаете некоторый символ как отменяющий символ, обычно это тот символ, который никак не может появиться в строке. Например, вы можете назначить отменяющим символом тильду (~), если вы знаете, что она точно не может встретиться в строке. Любой обобщающий символ, перед которым стоит отменяющая последовательность, не считается обобщающим, а считается обычным символом. Например, чтобы просмотреть столбец comment таблицы sales_detail (на SQL Server) и определить, упоминали ли какие-нибудь покупатели о только что введенной скидке, можно использовать такой код.

SELECT
оrd_id,
comment
FROM sales_detail
WHERE comment LIKE ‘%"%%’ ESCAPE

В этом случае первый и последний символы % интерпретируются как обобщающие символы, а второй символ % интерпретируется просто как символ %, поскольку перед ним стоит отменяющая последовательность.

Источник