Оператор LIKE в SQL
Оператор LIKE применяется только к полям типа CHAR и VARCHAR, поскольку он используется для поиска подстрок. Другими словами, оператор LIKE осуществляет просмотр строки для выяснения: входит ли заданная подстрока в указанное поле. Для осуществления более качественного просмотра подстроки используются шаблоны. Шаблоны – это специальные символы, которые могут обозначать всё что угодно.
Шаблоны оператора LIKE для поиска
- Существует три типа шаблонов, которые можно использовать с оператором LIKE:
- Символ «нижнее подчёркивание» (_) заменяет один любой символ.
- Символ «процент» (%) заменяет последовательность символов произвольной длины, в том числе и нулевой.
- Квадратные скобки [ ], внутри них можно указать последовательность символов, чтобы выполнить поиск. Если мы укажем в квадратных скобках последовательность символов, например — ВИ, то поиск будет выполняться с учётом того, что информация будет начинаться с В или И.
Escape-символы (экранирование символов)
Чтобы найти в строке символ подчёркивания или процента, в предикате LIKE любой символ можно определить, как Escape-символ. Он используется в предикате непосредственно перед символом процента или подчёркивания, и означает что следующий за ним символ интерпретируется именно как обычный символ, а не как символ шаблона.
Практический пример с ESCAPE
Вывести из таблицы Users имена пользователей, чей прогресс составляет 44%.
SELECT name FROM Users WHERE name LIKE '44!% ' ESCAPE '!'
Практический пример с %
Вывести из таблицы Users имена пользователей, имена которых начинаются с буквы В.
SELECT name FROM Users WHERE name LIKE 'B%';
Практический пример с _
Вывести из таблицы Users имена пользователей, чьё имя составляет не более 7 символов и начинается на букву В.
SELECT name FROM Users WHERE name LIKE 'B______';
Практический пример с [ ]
Вывести из таблицы Users имена пользователей, которые начинаются на букву В и И.
SELECT name FROM Users WHERE name LIKE '[ВИ]%';
Можно использовать метасимвол ^, который означает противоположное действие. То есть сейчас мы ведем имена, которые не начинаются на буквы В и И.
SELECT name FROM Users WHERE name LIKE '[^ВИ]%';