SQL условие LIKE

В этом учебном материале вы узнаете, как использовать 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_idfirst_namelast_namefavorite_website
4000JustinBiebergoogle.com
5000SelenaGomezbing.com
6000 MilaKunisyahoo.com
7000TomCruiseoracle.com
8000JohnnyDeppNULL
9000RussellCrowegoogle.com

Введите следующий SQL оператор.

Будет выбрано 2 записи. Вот результаты, которые вы должны получить.

customer_idfirst_namelast_namefavorite_website
7000TomCruiseoracle.com
9000RussellCrowegoogle.com

В этом примере возвращаются записи таблицы customers, где last_name начинается с ‘C’. Как видите, были возвращены записи по фамилиям Cruise и Crowe.
Поскольку условие LIKE не чувствительно к регистру, следующий SQL оператор вернет те же результаты.

Использование нескольких подстановочных символов % в условии LIKE

Вы также можете использовать подстановочный символ % несколько раз с условием LIKE.
Используя ту же таблицу customers со следующими данными:

customer_idfirst_namelast_namefavorite_website
4000JustinBiebergoogle.com
5000SelenaGomezbing.com
6000 MilaKunisyahoo.com
7000TomCruiseoracle.com
8000JohnnyDeppNULL
9000RussellCrowegoogle.com

Попробуем найти все значения last_name из таблицы customers, где last_name содержит букву ‘e’.
Введите следующий SQL оператор:

Будет выбрано 3 записей. Вот результаты, которые вы должны получить.

last_name
Bieber
Gomez
Depp

В этом примере фамилии Bieber, Gomez и Depp содержат букву ‘е’.

Пример — использование подстановочного символа _ в условии LIKE

Далее рассмотрим, как подстановочный символ _ (символ подчеркивания) работает в условии LIKE. Помните, что подстановочный символ _ ищет ровно один символ, в отличие от подстановочного символа %.
Используя таблицу categories со следующими данными:

category_idcategory_name
25Deli
50Produce
75Bakery
100General Merchandise
125Technology

Попробуем найти все записи из таблицы categories, где category_id имеет длину 2 цифры и заканчивается на ‘5’. Введите следующий SQL оператор.

Будет выбрано 2 записи. Вот результаты, которые вы должны получить.

category_idcategory_name
25Deli
75Bakery

В этом примере есть 2 записи, которые будут соответствовать шаблону — category_id со значениями 25 и 75. Обратите внимание, что category_id равный 125 не был выбран потому что символ _ соответствует только одному символу.

Использование нескольких подстановочных символов _ в условии LIKE

Если вы хотите сопоставить трехзначное значение, заканчивающееся на «5», вам нужно будет использовать подстановочный символ _ два раза. Вы можете изменить свой запрос следующим образом.

Теперь вы вернете значение category_id равное 125.

category_idcategory_name
125Technology

Пример — использование оператора NOT с условием LIKE

Далее давайте рассмотрим пример использования оператора NOT с условием LIKE.
В этом примере у нас есть таблица suppliers со следующими данными:

supplier_idsupplier_namecitystate
100YandexMoscowRussian
200GoogleLansingMichigan
300OracleRedwood CityCalifornia
400BingRedmondWashington
500YahooSunnyvaleWashington
600DuckDuckGoPaoliPennsylvania
700QwantParisFrance
800FacebookMenlo ParkCalifornia
900Electronic ArtsSan FranciscoCalifornia

Давайте посмотрим на все записи в таблице suppliers, где supplier_name не содержит литеру ‘o’. Введите следующий SQL оператор.

Будут выбраны 4 записи. Вот результаты, которые вы должны получить.

supplier_idsupplier_namecitystate
100YandexMoscowRussian
300OracleRedwood CityCalifornia
400BingRedmondWashington
700QwantParisFrance

В этом примере в таблице suppliers есть четыре записи, в которых supplier_name не содержит литеру ‘o’.

Пример — использование escape-символов с условием LIKE

Важно понимать, как использовать «escape-символ» когда он соответствует шаблону. Вы можете экранировать % или _ и искать литеральные версии.
Допустим, вы хотели найти % как литерал в условии LIKE. Вы можете сделать это с помощью escape-символа. В нашем примере мы будем использовать ! как escape-символ в условии LIKE.
NOTE: Вы можете определить только escape-символ как один символ. Лучше всего выбрать такой символ, который не будет появляться в ваших данных очень часто, например ! или же #.
В этом примере мы имеем таблицу test со следующими данными:

test_idtest_value
110%
225%
3100
499

Мы могли бы вернуть все записи из таблицы test, где test_value содержит литерал %. Введите следующий SQL оператор.

Вот результаты, которые вы должны получить.

test_idtest_value
110%
225%

В этом примере символ ! определяется как escape-символ. Первое и последнее значения % в условии LIKE рассматриваются как обычные подстановочные символы. !% является экранированным %, поэтому он рассматривается как литеральное значение %.
Вы можете дополнительно изменить приведенный выше пример и возвращать только те test_values, которые начинаются с 1 и содержат литерал %. Введите следующий SQL оператор:

Вот результаты, которые вы должны получить.

test_idtest_value
110%

Этот пример, на этот раз, вернет только одну запись. Потому что есть только один test_value, который начинается на 1 и содержит литерал %.