SQL Like
LIKE — данный оператор используется с условием WHERE для поиска значений по образцу.
Синтаксис SQL LIKE
Пример 1
Есть таблица «Persons»:
P_Id | LastName | FirstName | Address | City |
---|---|---|---|---|
1 | Hansen | Ola | Timoteivn 10 | Sandnes |
2 | Svendson | Tove | Borgvn 23 | Sandnes |
3 | Pettersen | Kari | Storgt 20 | Stavanger |
Теперь мы хотим выбрать всех лиц, которые живут в городе, имя которого начинается с буквы «s» из таблицы выше.
Для этого используем такой запрос:
«%» — данный знак является маской. Обозначает любые символы.
Результат запроса:
P_Id | LastName | FirstName | Address | City |
---|---|---|---|---|
1 | Hansen | Ola | Timoteivn 10 | Sandnes |
2 | Svendson | Tove | Borgvn 23 | Sandnes |
3 | Pettersen | Kari | Storgt 20 | Stavanger |
Пример 2
Теперь мы хотим выбрать всех лиц, которые живут в городе, имя которого заканчивается на букву «s» из таблицы выше.
Для этого используем такой запрос:
Результат запроса:
P_Id | LastName | FirstName | Address | City |
---|---|---|---|---|
1 | Hansen | Ola | Timoteivn 10 | Sandnes |
2 | Svendson | Tove | Borgvn 23 | Sandnes |
Пример 3
Теперь мы хотим выбрать всех лиц, которые живут в городе, имя которого содержит в себе буквы «tav». Не важно, в каком месте будут находиться данные символы, в начале или конце слова.
Для этого используем такой запрос.:
Результат запроса:
P_Id | LastName | FirstName | Address | City |
---|---|---|---|---|
3 | Pettersen | Kari | Storgt 20 | Stavanger |
Пример 4
Теперь мы хотим выбрать всех лиц, которые живут в городе, имя которого
Для этого используем такой запрос.:
Результат запроса:
P_Id | LastName | FirstName | Address | City |
---|---|---|---|---|
1 | Hansen | Ola | Timoteivn 10 | Sandnes |
2 | Svendson | Tove | Borgvn 23 | Sandnes |
dimonchik.com
LIKE SQL Server — Oracle PL/SQL •MySQL •MariaDB •SQL Server •SQLite
В этом учебном пособии вы узнаете, как использовать в SQL Server условие LIKE (Transact-SQL) для выполнения сопоставления с шаблоном с синтаксисом и примерами.
Описание
Условие LIKE SQL Server (Transact-SQL) определяет, совпадает ли указанная символьная строка с заданным шаблоном в предложении WHERE в операторе SELECT, INSERT, UPDATE или DELETE. Это позволяет выполнять сопоставление образцов.
Синтаксис
Синтаксис условия LIKE в SQL Server (Transact-SQL):
expression LIKE pattern [ ESCAPE ‘escape_character’ ]
Параметры или аргументы
expression — символьное выражение, такое как столбец или поле.
pattern — символьное выражение, содержащее подстановочный символ. Подстановочные символы, которые вы можете выбрать:
символ | пояснение |
---|---|
% | Позволяет вам сопоставлять любую строку любой длины (включая нулевую длину) |
_ | Позволяет вам сопоставлять один символ |
[ ] | Позволяет вам сопоставлять любой символ в скобках [] (например, [abc] будет соответствовать символам a, b или c) |
[^] | Позволяет вам сопоставлять любой символ, не находящийся в скобках [^] (например, [^ abc] будет соответствовать любому символу, который не является символом a, b или c) |
escape_character — необязательный. Это позволяет вам проверять для буквенных экземпляров символа подстановки, например % или _.
Пример использования подстановочного символа % (символ процента)
Первый пример SQL Server LIKE, который мы рассмотрим, включает использование шаблона %.
Давайте объясним, как шаблон % работает в SQL Server условии LIKE. Мы хотим найти всех employees (сотрудников), чье имя last_name начинается с ‘Б’.
Например:
SELECT * FROM employees WHERE last_name LIKE ‘Б%’;
SELECT * FROM employees WHERE last_name LIKE ‘Б%’; |
Этот пример условия SQL Server LIKE вернет всех employees у которых last_name будет начинаться на ‘Б’ такие как ‘Брошкин’, ‘Баранников’, ‘Богомолец’ и т.д.
Вы также можете использовать групповой символ % несколько раз в одной строке. Например:
SELECT * FROM employees WHERE last_name LIKE ‘%o%’;
SELECT * FROM employees WHERE last_name LIKE ‘%o%’; |
В этом примере SQL LIKE мы ищем всех employees (сотрудников), у которых last_name содержит букву ‘o’.
Пример использования подстановочного символа _ (символ подчеркивания)
Затем давайте объясним, как подстановочный символ _ (символ подчеркивания) работает в условии SQL Server LIKE. Помните, что _ ищет только один символ.
Например:
SELECT * FROM employees WHERE last_name LIKE ‘Кр_т’;
SELECT * FROM employees WHERE last_name LIKE ‘Кр_т’; |
Этот пример условия SQL LIKE возвращает всех employees (сотрудников), чье имя last_name равно 4 символам, причем первые два символа — «Кр», а последний символ — «т». Например, он может вернуть сотрудников, чье last_name является «Крот», «Крат», «Крут», «Крит» и т.д.
Вот еще один пример:
SELECT * FROM employees WHERE employee_number LIKE ‘123_’;
SELECT * FROM employees WHERE employee_number LIKE ‘123_’; |
Вам может понадобиться найти номер employee_number, но у вас есть только 3 из 4 цифр. В приведенном выше примере будет извлечено потенциально 10 записей (где отсутствующее значение могло бы равняться чему угодно от 0 до 9). Например, он может вернуть employees, чьи employee_number:
1230, 1231, 1232, 1233, 1234, 1235, 1236, 1237, 1238, 1239
Пример использования подстановочного символа [] (квадратные скобки).
Далее, давайте объясним, как подстановочный символ [] (квадратные скобки) работает в условии SQL Server LIKE. Помните, что то, что содержится в квадратных скобках, это символы, которые вы пытаетесь сопоставить.
Например:
SELECT * FROM employees WHERE first_name LIKE ‘К[ио]тов’;
SELECT * FROM employees WHERE first_name LIKE ‘К[ио]тов’; |
Этот пример условия LIKE SQL Server возвращает всех employees, чье имя first_name равно 5 символам, причем первый символ — «К», а три последних символа — «тов», а второй символ — «и» или «о». Таким образом, в этом случае он будет соответствовать либо «Китов», либо «Котов».
Пример использования подстановочного символа [^] (квадратные скобки с символом ^).
Затем давайте объясним, как подстановочный символ [^] (квадратные скобки с подстановочным символом ^) работает в условии SQL Server LIKE. Помните, что то, что содержится в квадратных скобках, это символы, которые вы НЕ хотите сопоставлять.
Например:
SELECT * FROM employees WHERE first_name LIKE ‘К[^ио]тов’;
SELECT * FROM employees WHERE first_name LIKE ‘К[^ио]тов’; |
Этот пример условия SQL Server LIKE возвращает всех сотрудников, чье имя first_name равно 5 символам, причем первый символ — «К», а три последних символа — «тов», а второй символ не является «и» или «о». Таким образом, в этом случае он будет соответствовать таким значениям, как «Катов», «Кутов», «Кетов» и т.д. Но это не будет соответствовать ни «Китов», ни «Котов».
Пример использования оператора NOT
Затем давайте посмотрим, как использовать SQL Server NOT Operator с помощью подстановочных символов.
Будем использовать % с оператором NOT. Вы также можете использовать условие SQL LIKE для поиска employees (сотрудников), имя которых не начинается с буквы «Б».
Например:
SELECT * FROM employees WHERE last_name NOT LIKE ‘Б%’;
SELECT * FROM employees WHERE last_name NOT LIKE ‘Б%’; |
Поместив оператор NOT перед условием LIKE SQL Server, вы сможете получить всех employees, имя которых не начинается с «Б».
Пример использования символов Escape
Важно понимать, как сопоставить «Escape Characters» с pattern. Эти примеры относятся конкретно к экранирующим символам в SQL Server.
Предположим, вы хотели найти символ % или _ в условии SQL Server LIKE. Вы можете сделать это, используя символ Escape.
Обратите внимание, что вы можете определить escape-символ только как один символ (length = 1).
Например:
SELECT * FROM employees WHERE secret_hint LIKE ‘123!%455’ ESCAPE ‘!’;
SELECT * FROM employees WHERE secret_hint LIKE ‘123!%455’ ESCAPE ‘!’; |
Этот пример условия SQL LIKE идентифицирует символ ! как escape-символ. Это предложение вернет всех employees, чей secret_hint составляет 123%455.
Вот еще один более сложный пример использования escape-символов в SQL Server условии LIKE.
SELECT * FROM employees WHERE secret_hint LIKE ‘H%!%’ ESCAPE ‘!’;
SELECT * FROM employees WHERE secret_hint LIKE ‘H%!%’ ESCAPE ‘!’; |
Этот пример условия SQL LIKE возвращает всех employees, чей secret_hint начинается с ‘H’ и заканчивается на ‘%’. Например, он возвращает значение, например «Help%».
Вы также можете использовать escape-символ с символом _ в условии SQL Server LIKE.
Например:
SELECT * FROM employees WHERE secret_hint LIKE ‘H%!_’ ESCAPE ‘!’;
SELECT * FROM employees WHERE secret_hint LIKE ‘H%!_’ ESCAPE ‘!’; |
Этот пример условия SQL LIKE возвращает всех employees, чей secret_hint начинается с ‘H’ и заканчивается на ‘_’. Например, он вернет значение, например «Help_».
oracleplsql.ru
Команда LIKE — поиск по базе данных
Команда LIKE задает поиск по определенному шаблону.
См. также команду NOT, которая делает отрицание (к примеру, так: NOT LIKE).
Синтаксис
SELECT * FROM имя_таблицы WHERE поле LIKE шаблон_поиска
Примеры
Все примеры будут по этой таблице workers, если не сказано иное:
id айди | name имя | age возраст | salary зарплата |
---|---|---|---|
1 | Дима | 23 | 400 |
2 | Петя | 25 | 500 |
3 | Вася | 23 | 500 |
4 | Коля | 30 | 1000 |
5 | Иван | 27 | 500 |
6 | Кирилл | 28 | 1000 |
Пример
В данном примере команда LIKE найдет все записи, у которых имя заканчивается на ‘я’:
SELECT * FROM workers WHERE name LIKE '%я'
SQL запрос выберет следующие строки:
id айди | name имя | age возраст | salary зарплата |
---|---|---|---|
2 | Петя | 25 | 500 |
3 | Вася | 23 | 500 |
4 | Коля | 30 | 1000 |
Пример
Давайте выберем те записи, у которых возраст начинается с цифры 2, а затем идет еще один символ:
SELECT * FROM workers WHERE age LIKE '2_'
SQL запрос выберет следующие строки:
id айди | name имя | age возраст | salary зарплата |
---|---|---|---|
1 | Дима | 23 | 400 |
2 | Петя | 25 | 500 |
3 | Вася | 23 | 500 |
5 | Иван | 27 | 500 |
6 | Кирилл | 28 | 1000 |
old.code.mu
LIKE условие MySQL — Oracle PL/SQL •MySQL •MariaDB •SQL Server •SQLite
В этом учебном пособии вы узнаете, как использовать MySQL условие LIKE для выполнения сопоставления шаблонов с синтаксисом и примерами.
Описание
MySQL условие LIKE позволяет использовать шаблоны в операторе WHERE для оператора SELECT, INSERT, UPDATE или DELETE. Это позволяет выполнять сопоставление шаблонов.
Синтаксис
Синтаксис условия LIKE в MySQL:
expression LIKE pattern [ ESCAPE ‘escape_character’ ]
Параметры или аргументы
expression — символьное выражение, такое как столбец или поле.
pattern — символьное выражение, содержащее сопоставление шаблонов. Шаблоны, которые вы можете выбрать:
% — позволяет вам сопоставлять любую строку любой длины (включая нулевую длину)
_ — позволяет вам сопоставлять один символ
escape_character — необязательный. Это позволяет вам проверять для буквенных экземпляров символы подстановки, такие как % или _. Если вы не укажите escape_character, MySQL предположит, что \ является escape_character.
Пример использования символа % (подстановочный символ процента)
Первый MySQL пример LIKE, который мы рассмотрим, включает использование % (подстановочный символ процента).
Рассмотрим как % работает в MySQL условии LIKE. Мы хотим найти всех customers, last_name которых начинается с «Ber».
SELECT customer_name FROM customers WHERE last_name LIKE ‘Ber%’;
SELECT customer_name FROM customers WHERE last_name LIKE ‘Ber%’; |
Вы также можете использовать % несколько раз в одной строке.
Например:
SELECT customer_name FROM customers WHERE last_name LIKE ‘%ns%’;
SELECT customer_name FROM customers WHERE last_name LIKE ‘%ns%’; |
В этом примере MySQL условия LIKE мы ищем всех customers, у которых last_name содержит символы ‘ns’.
Пример использования подстановочного символа _ (подстановочный символ подчеркивания)
Рассмотрим, как знак _ (подстановочный символ подчеркивания) работает в MySQL условии LIKE. Помните, что подстановочный символ _ означает только один символ.
Например:
SELECT supplier_name FROM suppliers WHERE supplier_name LIKE ‘Ber_ard’;
SELECT supplier_name FROM suppliers WHERE supplier_name LIKE ‘Ber_ard’; |
Этот пример MySQL условия LIKE возвращает всех suppliers, supplier_name которых составляет 7 символов, причем первые три символа — «Ber», а последние три символа — «ard». Например, он может вернуть всех, supplier_name которых — ‘Bernard’, ‘Berzard’, ‘Bermard’, ‘Bersard’ и т.д.
И еще один пример:
SELECT * FROM suppliers WHERE account_number LIKE ‘12345_’;
SELECT * FROM suppliers WHERE account_number LIKE ‘12345_’; |
Вам может понадобиться найти номер учетной записи, но у вас есть только 5 из 6 цифр. В приведенном выше примере будет извлечено потенциально 10 записей (где отсутствующее значение могло бы равняться чему угодно от 0 до 9). Например, запрос может вернуть suppliers, чьи номера учетной записи: 123450, 123451, 123452, 123453, 123454, 123455, 123456, 123457, 123458, 123459
Пример использования оператора NOT
Рассмотрим, как вы будете использовать оператор NOT с подстановочными символами.
Давайте использовать подстановочный символ % с оператором NOT. Вы также можете использовать MySQL условие LIKE для поиска suppliers, supplier_name которых не начинается с «B».
Например:
SELECT supplier_name FROM suppliers WHERE supplier_name NOT LIKE ‘B%’;
SELECT supplier_name FROM suppliers WHERE supplier_name NOT LIKE ‘B%’; |
Помещая оператора NOT перед MySQL условием LIKE, вы получите всех suppliers, supplier_name которых не начинается с «B».
Пример использования символов Escape
Важно понять, каким образом «Escape Characters» сравнивается с шаблоном. Эти примеры относятся конкретно к экранирующим символам в MySQL.
Предположим, вы хотели найти символы % или _ в MySQL условии LIKE. Вы можете сделать это, используя символ Escape.
Обратите внимание, что вы можете определить только escape-символ как один символ (длина 1).
Например:
SELECT * FROM suppliers WHERE supplier_name LIKE ‘B\%’;
SELECT * FROM suppliers WHERE supplier_name LIKE ‘B\%’; |
Поскольку мы не указали каким будет escape-символ, то MySQL предполагает, что «\» и является escape-символом. Т.к. MySQL предположил, что «\» это и есть escape-символ, что приведет к тому, что MySQL обработает символ % как литерал, вместо подстановочного символа. Затем этот запрос будет возвращать всех suppliers, у которых supplier_name = ‘B\%’.
Мы можем переопределить escape-символ по умолчанию в MySQL, предоставив модификатор ESCAPE следующим образом:
SELECT * FROM suppliers WHERE supplier_name LIKE ‘Br!%’ ESCAPE ‘!’;
SELECT * FROM suppliers WHERE supplier_name LIKE ‘Br!%’ ESCAPE ‘!’; |
Этот пример MySQL условия LIKE идентифицирует символ ! как escape-символ. Escape-символ ! приведет к тому, что MySQL обрабатывает символ % как литерал. В результате в этом запросе также будут выбраны все suppliers, supplier_name которых Br%.
Вот еще один более сложный пример использования escape-символов в MySQL условии LIKE.
SELECT * FROM suppliers WHERE supplier_name LIKE ‘H%\%’;
SELECT * FROM suppliers WHERE supplier_name LIKE ‘H%\%’; |
Этот пример условия LIKE MySQL возвращает всех suppliers, чье имя начинается с H и заканчивается на %. Например, он вернет значение, например «Hello%». Поскольку мы не указывали escape-символ в условии LIKE, MySQL предполагает, что escape-символ «\», что приводит к тому, что MySQL обрабатывает второй символ % как литерал вместо подстановочного символа.
Мы могли бы изменить это условие LIKE, указав escape-символ следующим образом:
SELECT * FROM suppliers WHERE supplier_name LIKE ‘H%!%’ ESCAPE ‘!’;
SELECT * FROM suppliers WHERE supplier_name LIKE ‘H%!%’ ESCAPE ‘!’; |
Этот пример MySQL условия LIKE возвращает всех suppliers, имя которых начинается с H и заканчивается символом %. Например, он вернет значение, например «Hello%».
Вы также можете использовать escape character с символом _ в MySQL условии LIKE.
Например:
SELECT * FROM suppliers WHERE supplier_name LIKE ‘H%\_’;
SELECT * FROM suppliers WHERE supplier_name LIKE ‘H%\_’; |
Опять же, поскольку не предусмотрен модификатор ESCAPE, MySQL использует «\» в качестве символа escape, в результате чего символ _ обрабатывается как литерал вместо подстановочного символа. В этом примере будут возвращены все suppliers, supplier_name которых начинается с H и заканчивается на _. Например, запрос вернет значение, такое как «Hello_».
oracleplsql.ru
SQL условие LIKE — Oracle PL/SQL •MySQL •MariaDB •SQL Server •SQLite
В этом учебном материале вы узнаете, как использовать SQL условие LIKE (для сопоставления с шаблоном) с синтаксисом и примерами.
Описание
SQL условие LIKE позволяет использовать подстановочные символы для сопоставления с шаблоном в запросе. Условие LIKE используется в предложении WHERE оператора SELECT, INSERT, UPDATE или DELETE.
Синтаксис
Синтаксис для условия LIKE в SQL.
expression LIKE pattern [ ESCAPE ‘escapecharacter’ ]
Параметры или аргумент
- expression
- Символьное выражение, такое как поле или столбец
- pattern
- Символьное выражение, которое содержит сопоставление с шаблоном. Подстановочные символы, которые вы можете выбрать:
Символ Объяснение %
Позволяет сопоставить любую строку любой длины (включая нулевую длину) _
Позволяет сопоставить одиночный символ - ESCAPE ‘escapecharacter’
- Необязательный. Это позволяет вам сопоставлять шаблоны с литеральными подстановочными символами, такими как
%
или_
.
Пример — использование подстановочного символа %
в условии LIKE
Давайте рассмотрим, как подстановочный символ %
работает в SQL условии LIKE. Помните, что подстановочный символ %
соответствует любой строке любой длины (включая нулевую длину).
В этом первом примере мы хотим найти все записи в таблице customers, где last_name клиента начинается с ‘C’.
В этом примере у нас есть таблица customers со следующими данными:
customer_id | first_name | last_name | favorite_website |
---|---|---|---|
4000 | Justin | Bieber | google.com |
5000 | Selena | Gomez | bing.com |
6000 | Mila | Kunis | yahoo.com |
7000 | Tom | Cruise | oracle.com |
8000 | Johnny | Depp | NULL |
9000 | Russell | Crowe | google.com |
Введите следующий SQL оператор.
SELECT * FROM customers WHERE last_name LIKE ‘C%’ ORDER BY last_name;
SELECT * FROM customers WHERE last_name LIKE ‘C%’ ORDER BY last_name; |
Будет выбрано 2 записи. Вот результаты, которые вы должны получить.
customer_id | first_name | last_name | favorite_website |
---|---|---|---|
7000 | Tom | Cruise | oracle.com |
9000 | Russell | Crowe | google.com |
В этом примере возвращаются записи таблицы customers, где last_name начинается с ‘C’. Как видите, были возвращены записи по фамилиям Cruise и Crowe.
Поскольку условие LIKE не чувствительно к регистру, следующий SQL оператор вернет те же результаты.
SELECT * FROM customers WHERE last_name LIKE ‘c%’ ORDER BY last_name;
SELECT * FROM customers WHERE last_name LIKE ‘c%’ ORDER BY last_name; |
Использование нескольких подстановочных символов %
в условии LIKE
Вы также можете использовать подстановочный символ %
несколько раз с условием LIKE.
Используя ту же таблицу customers со следующими данными:
customer_id | first_name | last_name | favorite_website |
---|---|---|---|
4000 | Justin | Bieber | google.com |
5000 | Selena | Gomez | bing.com |
6000 | Mila | Kunis | yahoo.com |
7000 | Tom | Cruise | oracle.com |
8000 | Johnny | Depp | NULL |
9000 | Russell | Crowe | google.com |
Попробуем найти все значения last_name из таблицы customers, где last_name содержит букву ‘e’.
Введите следующий SQL оператор:
SELECT last_name FROM customers WHERE last_name LIKE ‘%e%’ ORDER BY last_name;
SELECT last_name FROM customers WHERE last_name LIKE ‘%e%’ ORDER BY last_name; |
Будет выбрано 3 записей. Вот результаты, которые вы должны получить.
last_name |
---|
Bieber |
Gomez |
Depp |
В этом примере фамилии Bieber, Gomez и Depp содержат букву ‘е’.
Пример — использование подстановочного символа _
в условии LIKE
Далее рассмотрим, как подстановочный символ _
(символ подчеркивания) работает в условии LIKE. Помните, что подстановочный символ _
ищет ровно один символ, в отличие от подстановочного символа %
.
Используя таблицу categories со следующими данными:
category_id | category_name |
---|---|
25 | Deli |
50 | Produce |
75 | Bakery |
100 | General Merchandise |
125 | Technology |
Попробуем найти все записи из таблицы categories, где category_id имеет длину 2 цифры и заканчивается на ‘5’. Введите следующий SQL оператор.
SELECT * FROM categories WHERE category_id LIKE ‘_5’;
SELECT * FROM categories WHERE category_id LIKE ‘_5’; |
Будет выбрано 2 записи. Вот результаты, которые вы должны получить.
category_id | category_name |
---|---|
25 | Deli |
75 | Bakery |
В этом примере есть 2 записи, которые будут соответствовать шаблону — category_id со значениями 25 и 75. Обратите внимание, что category_id равный 125 не был выбран потому что символ _
соответствует только одному символу.
Использование нескольких подстановочных символов _
в условии LIKE
Если вы хотите сопоставить трехзначное значение, заканчивающееся на «5», вам нужно будет использовать подстановочный символ _
два раза. Вы можете изменить свой запрос следующим образом.
SELECT * FROM categories WHERE category_id LIKE ‘__5’;
SELECT * FROM categories WHERE category_id LIKE ‘__5’; |
Теперь вы вернете значение category_id равное 125.
category_id | category_name |
---|---|
125 | Technology |
Пример — использование оператора NOT с условием LIKE
Далее давайте рассмотрим пример использования оператора NOT с условием LIKE.
В этом примере у нас есть таблица suppliers со следующими данными:
supplier_id | supplier_name | city | state |
---|---|---|---|
100 | Yandex | Moscow | Russian |
200 | Lansing | Michigan | |
300 | Oracle | Redwood City | California |
400 | Bing | Redmond | Washington |
500 | Yahoo | Sunnyvale | Washington |
600 | DuckDuckGo | Paoli | Pennsylvania |
700 | Qwant | Paris | France |
800 | Menlo Park | California | |
900 | Electronic Arts | San Francisco | California |
Давайте посмотрим на все записи в таблице suppliers, где supplier_name не содержит литеру ‘o’. Введите следующий SQL оператор.
SELECT * FROM suppliers WHERE supplier_name NOT LIKE ‘%o%’;
SELECT * FROM suppliers WHERE supplier_name NOT LIKE ‘%o%’; |
Будут выбраны 4 записи. Вот результаты, которые вы должны получить.
supplier_id | supplier_name | city | state |
---|---|---|---|
100 | Yandex | Moscow | Russian |
300 | Oracle | Redwood City | California |
400 | Bing | Redmond | Washington |
700 | Qwant | Paris | France |
В этом примере в таблице suppliers есть четыре записи, в которых supplier_name не содержит литеру ‘o’.
Пример — использование escape-символов с условием LIKE
Важно понимать, как использовать «escape-символ» когда он соответствует шаблону. Вы можете экранировать %
или _
и искать литеральные версии.
Допустим, вы хотели найти %
как литерал в условии LIKE. Вы можете сделать это с помощью escape-символа. В нашем примере мы будем использовать !
как escape-символ в условии LIKE.
NOTE: Вы можете определить только escape-символ как один символ. Лучше всего выбрать такой символ, который не будет появляться в ваших данных очень часто, например !
или же #
.
В этом примере мы имеем таблицу test со следующими данными:
test_id | test_value |
---|---|
1 | 10% |
2 | 25% |
3 | 100 |
4 | 99 |
Мы могли бы вернуть все записи из таблицы test, где test_value содержит литерал %
. Введите следующий SQL оператор.
SELECT * FROM test WHERE test_value LIKE ‘%!%%’ escape ‘!’;
SELECT * FROM test WHERE test_value LIKE ‘%!%%’ escape ‘!’; |
Вот результаты, которые вы должны получить.
test_id | test_value |
---|---|
1 | 10% |
2 | 25% |
В этом примере символ !
определяется как escape-символ. Первое и последнее значения %
в условии LIKE рассматриваются как обычные подстановочные символы. !%
является экранированным %
, поэтому он рассматривается как литеральное значение %
.
Вы можете дополнительно изменить приведенный выше пример и возвращать только те test_values, которые начинаются с 1 и содержат литерал %. Введите следующий SQL оператор:
SELECT * FROM test WHERE test_value LIKE ‘1%!%%’ escape ‘!’;
SELECT * FROM test WHERE test_value LIKE ‘1%!%%’ escape ‘!’; |
Вот результаты, которые вы должны получить.
Этот пример, на этот раз, вернет только одну запись. Потому что есть только один test_value, который начинается на 1 и содержит литерал %
.
oracleplsql.ru
SQL LIKE — строка с заданными символами и её поиск
Часто с помощью предиката SQL LIKE найти нужную строку в текстовых значениях таблицы проще, чем с помощью оператора равенства (=). Предикат LIKE используется в секции WHERE. После предиката прописывается выражение, содержащее символы алфавита, а также специальные символы — знак процента (%) и подчёркивание (_).
- Символ % соответствует любому количеству любых символов, а также их отсутствую.
- Символ _ соответствует ровно одному любому символу.
Приведём виды наиболее распространённых выражений, которые используются с предикатом LIKE для поиска подстроки.
- ‘xyz%’ — любые строки, которые начинаются с букв xyz;
- ‘xyz_’ — строка длиной в определённое количество символов, которая обязательно начинается с указанных букв;
- ‘%z’ — любая последовательность символов, которая заканчивается символом z;
- ‘%Word%’ — любая последовательность символов, содержащая слово ‘Word’ в любой позиции строки;
- ‘% % %’ — строка, содержащая не менее двух пробелов.
Следует обратить внимание, что в этих выражениях Word — не то же самое, что word, так как регистр символов имеет значение. В целом же синтаксис запросов с предикатом LIKE следующий:
SELECT СТОЛБЦЫ FROM ИМЯ_ТАБЛИЦЫ WHERE ИМЯ_СТОЛБЦА LIKE ВЫРАЖЕНИЕ
В примерах будем работать с базой данных «Театр». Таблица Play содержит данные о постановках. Таблица Team — о ролях актёров. Таблица Actor — об актёрах. Таблица Director — о режиссёрах. Поля таблиц, первичные и внешние ключи можно увидеть на рисунке ниже (для увеличения нажать левой кнопкой мыши). Данные будем извлекать из одной таблицы — Play.
Пример 1. Вывести спектакли, названия которых начинаются со слова ‘King’.
Пишем запрос в котором с предикатом LIKE используем выражение ‘King%’:
SELECT Name FROM Play WHERE Name LIKE ‘King%’
В результате выполнения запроса будет выведена таблица с одной строкой:
Пример 2. Вывести спектакли, названия которых начинаются с буквы ‘O’ и содержат 7 символов.
Пишем запрос в котором с предикатом LIKE используем выражение ‘O______’ (подчёркивание проставлено 6 раз):
SELECT Name FROM Play WHERE Name LIKE ‘O______’
В результате выполнения запроса будет выведена таблица с одной строкой:
Пример 3. Вывести спектакли, названия которых заканчиваются буквой ‘a’.
Пишем запрос в котором с предикатом LIKE используем выражение ‘%a’ (подчёркивание проставлено 6 раз):
SELECT Name FROM Play WHERE Name LIKE ‘%a’
В результате выполнения запроса будет выведена таблица со следующими строками:
Matilda |
Antony and Cleopatra |
Пример 4. Вывести спектакли, в названии которых содержится слово «War», например, такие как «The War That Never Ends», «The Wars of the Roses», но не «Howards End».
Пишем запрос в котором с предикатом LIKE используем выражение ‘%War%’:
SELECT Name FROM Play WHERE Name LIKE ‘%War%’
В результате выполнения запроса будет выведена таблица:
The Wars of the Roses |
The War That Never Ends |
Пример 5. Вывести спектакли, в названиях которых содержится не менее пяти пробелов.
Пишем запрос в котором с предикатом LIKE используем выражение ‘% % % % % %’:
SELECT Name FROM Play WHERE Name LIKE ‘% % % % % %’
В результате выполнения запроса будет выведена таблица:
Jeeves and Wooster in Perfect Nonsense |
All s Well That Ends Well |
Morte d Arthur — Sir Thomas Malory |
Поделиться с друзьями
Реляционные базы данных и язык SQL
function-x.ru
SQL LIKE Оператор
LIKE оператор используется в предложении WHERE для поиска определенного шаблона в колонке.
LIKE Оператор SQL
LIKE оператор используется для поиска определенного шаблона в колонке.
SQL LIKE Синтаксис
SELECT column_name(s)
FROM table_name
WHERE column_name LIKE pattern ;
Демо-версия базы данных
В этом уроке мы будем использовать хорошо известную базу данных Борей.
Ниже приводится подборка из «Customers» таблицы:
Пользовательский ИД | Имя Клиента | Контактное лицо | Адрес | город | Почтовый индекс | Страна |
---|---|---|---|---|---|---|
1 | Alfreds Futterkiste | Maria Anders | Obere Str. 57 | Berlin | 12209 | Germany |
2 | Ana Trujillo Emparedados y helados | Ana Trujillo | Avda. de la Constitucion 2222 | Mexico D.F. | 05021 | Mexico |
3 | Antonio Moreno Taqueria | Antonio Moreno | Mataderos 2312 | Mexico D.F. | 05023 | Mexico |
4 | Around the Horn | Thomas Hardy | 120 Hanover Sq. | London | WA1 1DP | UK |
5 | Berglunds snabbkop | Christina Berglund | Berguvsvagen 8 | Lulea | S-958 22 | Sweden |
Примеры SQL LIKE оператора
Следующий SQL — оператор выбирает всех клиентов с городом , начиная с буквы «s» :
Совет: «%» знак используется для определения маски (недостающие буквы) до и после рисунка. Вы узнаете больше о знаках подстановки в следующей главе.
Следующий SQL — оператор выбирает всех клиентов с городом заканчивая буквой «s» :
Следующий SQL — оператор выбирает всех клиентов со страной , содержащей шаблон «land» :
пример
www.w3bai.com