Что делает спецсимвол в паре с оператором like
Перейти к содержимому

Что делает спецсимвол в паре с оператором like

  • автор:

Оператор SQL LIKE

Оператор SQL LIKE устанавливает соответствие символьной строки с шаблоном.

Оператор SQL LIKE имеет следующий синтаксис:

expression [ NOT ] LIKE pattern

где, expression — любое символьное выражение

pattern — шаблон, по которому будет происходить проверка выражения expression. Шаблон может включать в себя следующие спец. символы:

Символ Описание Примеры
% Строка любой длины Пример 1
_ Любой одиночный символ Пример 2
[] Диапазон или
последовательность символов
Пример 3
[^] Исключающий диапазон или
последовательность символов
Пример 4

Примеры оператора SQL LIKE: Имеется следующая таблица Universities :

ID UniversityName Students Faculties Professores Location Site
1 Perm State National Research University 12400 12 1229 Perm psu.ru
2 Saint Petersburg State University 21300 24 13126 Saint-Petersburg spbu.ru
3 Novosibirsk State University 7200 13 1527 Novosibirsk nsu.ru
4 Moscow State University 35100 39 14358 Moscow msu.ru
5 Higher School of Economics 20335 12 1615 Moscow hse.ru
6 Ural Federal University 57000 19 5640 Yekaterinburg urfu.ru
7 National Research Nuclear University 8600 10 936 Moscow mephi.ru

Пример 1. С помощью оператора SQL LIKE вывести записи университетов, имеющих в своем названии слово «State»:

SELECT * FROM Universities WHERE UniversityName LIKE '%State%'
ID UniversityName Students Faculties Professores Location Site
1 Perm State National Research University 12400 12 1229 Perm psu.ru
2 Saint Petersburg State University 21300 24 13126 Saint-Petersburg spbu.ru
3 Novosibirsk State University 7200 13 1527 Novosibirsk nsu.ru
4 Moscow State University 35100 39 14358 Moscow msu.ru

В этом примере, в качестве шаблона оператора SQL LIKE послужил ‘%State%’. Исходя из условия задачи, слово State может стоять в названии где угодно, поэтому оно обрамлено символом «%», обозначающим строку любой длины перед и после слова.

Пример 2. С помощью оператора SQL LIKE вывести записи университетов, доменное имя сайта которых содержит 4 символа (за исключением домена .ru):

SELECT * FROM Universities WHERE Site LIKE '____.ru'
ID UniversityName Students Faculties Professores Location Site
2 Saint Petersburg State University 21300 24 13126 Saint-Petersburg spbu.ru
6 Ural Federal University 57000 19 5640 Yekaterinburg urfu.ru

Пример 3. С помощью оператора SQL LIKE вывести записи университетов, первая буква доменного имени сайта которых содержит буквы из диапазона [k-o]:

SELECT * FROM Universities WHERE Site LIKE '[k-o]%'
ID UniversityName Students Faculties Professores Location Site
3 Novosibirsk State University 7200 13 1527 Novosibirsk nsu.ru
4 Moscow State University 35100 39 14358 Moscow msu.ru
7 National Research Nuclear University 8600 10 936 Moscow mephi.ru

Пример 4. С помощью оператора SQL LIKE вывести записи университетов, вторая буква названия города которых, не входит в диапазон [e-o]:

SELECT * FROM Universities WHERE Location LIKE '_[^e-o]%'
ID UniversityName Students Faculties Professores Location Site
2 Saint Petersburg State University 21300 24 13126 Saint-Petersburg spbu.ru

Оператор LIKE SQL: примеры и синтаксис

LIKE в SQL выполняет функцию оператора, который помогает фильтровать результаты. Показываем, как правильно использовать оператор LIKE.

LIKE SQL — это оператор, который используется для поиска строк, содержащих определённый шаблон символов. Подробнее о нём читайте в нашей статье.

  1. Синтаксис LIKE SQL
  2. Примеры использования LIKE SQL

Синтаксис LIKE SQL

Использовать оператор LIKE в SQL очень просто: достаточно прописать стандартную команду выбора SELECT * FROM и задать условие через WHERE, где и будет использован оператор LIKE.

Шаблон LIKE SQL:

SELECT column1, column2, . FROM table_nameWHERE columnN LIKE pattern; 

Существует два подстановочных знака, которые используются в сочетании с оператором LIKE SQL:

  • % — знак процента представляет собой ноль, один или несколько символов;
  • _ — подчёркивание представляет собой один символ.

Примеры использования LIKE SQL

Рассмотрим SQL LIKE примеры. Представим, что вы хотите найти все имена, начинающиеся с буквы J. Для этого достаточно использовать следующий запрос:

SELECT * FROM table_name WHERE name LIKE 'J%'; 

В данном случае символ % используется для указания любого количества символов после J. Таким образом, запрос найдёт все имена, которые начинаются с буквы J, независимо от того, какие символы следуют за ней.

Ещё один пример — поиск всех адресов электронной почты, содержащих слово gmail. Для этого можно использовать следующий запрос:

SELECT * FROM table_name WHERE email LIKE '%gmail%'; 

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

Также можно использовать символ _ для указания одного символа. Например, запрос ниже найдет все имена, состоящие из шести символов. Эти имена должны начинаться с буквы J и заканчиваться буквой n:

SELECT * FROM table_name WHERE name LIKE 'J____n'; 

Здесь каждый символ _ указывает на любой один символ.

Иногда символы % и _ сами могут быть частью искомой строки. В таких случаях их нужно экранировать. Например, запрос ниже найдет все имена, содержащие символ %:

SELECT * FROM table_name WHERE name LIKE '%\%%'; 

Это было короткое руководство по работе с SQL LIKE. Также вы можете почитать о других основных командах SQL.

Следите за новыми постами по любимым темам

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

Что делает спецсимвол в паре с оператором like

like- это оператор, который используется для проверки соответствия шаблону; т. е. он сравнивает значения столбца с заданным шаблоном. Тип данных такого столбца может быть любым символьным типом или датой. Общая форма оператора like:

column [not] like ‘pattern’

Параметр pattern может быть константой типа строки или даты, либо это может быть выражение (включающее и столбцы таблиц), которое должно быть совместимым с типом данных соответствующего столбца. Для заданного столбца сравнение между значением в строке и шаблоном вычисляется в истину, если значение столбца соответствует выражению шаблона.

Некоторые символы в шаблоне, называемые шаблонными или групповыми символами, имеют специфическую интерпретацию. Два из этих символа:

♦ % (знак процента) задает любую последовательность из нуля или более символов;

♦ _ (подчеркивание) задает любой одиночный символ.

В примере 6.17 показано использование шаблонных символов % и _.

Оператор LIKE

В дополнение к символам процента и подчеркивания Transact-SQL поддерживает и другие символы, которые имеют специальное значение при использовании в операторе like. Эти символы ([,] и Л) демонстрируются в примерах 6.18 и 6.19.

Оператор LIKE

Как показано в примере 6.18, квадратные скобки [ ] заключают в себе диапазон или список символов. Порядок, в котором символы появляются в диапазоне, определяется порядком сортировки, который был задан при инсталляции системы.

Символ Л задает отрицание диапазона или списка символов. Этот символ имеет такое значение только при паре квадратных скобок, как показано в примере 6.19.

Оператор LIKE

Оператор LIKE

Оператор LIKE

Любой из шаблонных символов (%, _, [, ] или А), заключенный в квадратные скобки, остается обычным символом. Такая же возможность существует при использовании опции escape. Исходя из этого, оба оператора select в примере 6.21 имеют одно и то же значение.

Оператор LIKE

Оба оператора select отыскивают символ подчеркивания как фактический символ в столбце project name. В первом операторе select этот поиск задается заключением символа подчеркивания в квадратные скобки. Второй оператор select использует некий символ (в примере 6.21 это символ !) в качестве escape-символа. Escape-символ перекрывает значение символа подчеркивания как шаблонного символа и возвращает его интерпретацию как обычного символа. (Результат содержит ноль строк, потому что не существует проекта, в имени которого присутствовал бы символ подчеркивания.)

Что делает спецсимвол в паре с оператором like

Оператор LIKE используется при условных запросах, когда мы хотим узнать соответствует ли строка определённому шаблону.

Например, у нас есть таблица Users , в которой есть поле email :

MySQL
SELECT name, email FROM Users; 
name email
Bruce Willis barjam@hotmail.com
George Clooney tellis@me.com
Kevin Costner metzzo@hotmail.com
Samuel L. Jackson moonlapse@outlook.com
Kurt Russell gator@live.com

Допустим, мы хотим найти всех пользователей, чья почта лежит в домене второго уровня «hotmail». Т.е. нужно отобрать только те записи, что отвечают условию:

  • после символа «@» следует «hotmail»
  • после «hotmail» следует символ «.» и далее любая последовательность символов

Для таких нетривиальных поисков по строковым полям и нужен оператор LIKE .

MySQL
... WHERE поле_таблицы [NOT] LIKE шаблон_строки 

Шаблон может включать следующие специальные символы:

Символ Описание
% Последовательность любых символов (число символов в последовательности может быть от 0 и более)
_ Любой единичный символ

Так наш запрос на поиск пользователей в домене «hotmail» может выглядеть следующим образом:

MySQL
SELECT name, email FROM Users WHERE email LIKE '%@hotmail.%' 
name email
Bruce Willis barjam@hotmail.com
Kevin Costner metzzo@hotmail.com
Jennifer Lopez barjam@hotmail.com
Harrison Ford kostas@hotmail.com
Michael Douglas timtroyr@hotmail.com
Catherine Zeta-Jones flakeg@hotmail.com
MySQL
... WHERE поле_таблицы LIKE 'text%' 
MySQL
... WHERE поле_таблицы LIKE '%text' 
MySQL
... WHERE поле_таблицы LIKE '_ext' 
MySQL
... WHERE поле_таблицы LIKE 'begin%end' 

В MySQL по умолчанию шаблоны не чувствительны к регистру

ESCAPE-символ используется для экранирования специальных символов ( % и \ ). В случае если вам нужно найти строки, вы можете использовать ESCAPE-символ.

Например, вы хотите получить идентификаторы задач, прогресс которых равен 3%:

MySQL
SELECT job_id FROM Jobs WHERE progress LIKE '3!%' ESCAPE '!'; 

Если бы мы не экранировали трафаретный символ, то в выборку попало бы всё, что начинается на 3.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *