like в sql запросе

Оператор SQL LIKE

Оператор Like используется в предложении WHERE для поиска заданного шаблона в столбце.

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

  • % — Знак процента представляет ноль, один или несколько символов
  • _ — Знак подчеркивания представляет один символ

Примечание: MS Access использует вопросительный знак (?) вместо знака подчеркивания (_).

Знак процента и подчеркивание также могут быть использованы в комбинации!

LIKE Синтаксис

Совет: Можно также комбинировать любое количество условий с помощью операторов and или or.

Вот несколько примеров, демонстрирующих различные операторы LIKE с подстановочными знаками «%» и «_»:

LIKE Оператор Описание
WHERE CustomerName LIKE ‘a%’ Находит любые значения, которые начинаются с «a»
WHERE CustomerName LIKE ‘%a’ Находит любые значения, которые заканчиваются «a»
WHERE CustomerName LIKE ‘%or%’ Находит любые значения, которые имеют значение «or» в любом положении
WHERE CustomerName LIKE ‘_r%’ Находит все значения, которые имеют значение «r» во второй позиции
WHERE CustomerName LIKE ‘a_%_%’ Находит любые значения, которые начинаются с «a» и длиной не менее 3 символов
WHERE ContactName LIKE ‘a%o’ Находит любые значения, которые начинаются с «a» и заканчиваются на «o»

Демонстрационная база данных

Ниже приведен выбор из таблицы «Customers» в образце базы данных Northwind:

CustomerID CustomerName ContactName Address City PostalCode Country
1

Alfreds Futterkiste Maria Anders Obere Str. 57 Berlin 12209 Germany 2 Ana Trujillo Emparedados y helados Ana Trujillo Avda. de la Constitución 2222 México D.F. 05021 Mexico 3 Antonio Moreno Taquería Antonio Moreno Mataderos 2312 México D.F. 05023 Mexico 4

Around the Horn Thomas Hardy 120 Hanover Sq. London WA1 1DP UK 5 Berglunds snabbköp Christina Berglund Berguvsvägen 8 Luleå S-958 22 Sweden

Примеры в SQL

Следующая инструкция SQL выбирает всех клиентов с CustomerName, начинающейся с «a»:

Пример

Следующая инструкция SQL выбирает всех клиентов с CustomerName, заканчивающийся на «a»:

Пример

Следующая инструкция SQL выбирает всех клиентов с CustomerName, которые имеют «или» в любой позиции:

Пример

Следующая инструкция SQL выбирает всех клиентов с CustomerName, которые имеют «r» во второй позиции:

Пример

Следующая инструкция SQL выбирает всех клиентов с CustomerName, который начинается с «a» и длиной не менее 3 символов:

Пример

Следующая инструкция SQL выбирает всех клиентов с ContactName, который начинается с «a» и заканчивается на «o»:

Пример

Следующая инструкция SQL выбирает всех клиентов с CustomerName, который не начинается с «a»:

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

Теперь мы хотим выбрать всех лиц, которые живут в городе, имя которого не содержит в себе буквы «tav». Используем ключевое слово NOT.

Предикат LIKE сравнивает строку, указанную в первом выражении, для вычисления значения строки, называемого проверяемым значением, с образцом, который определен во втором выражении для вычисления значения строки. В образце разрешается использовать два трафаретных символа:

  • символ подчеркивания (_), который можно применять вместо любого единичного символа в проверяемом значении;
  • символ процента (%) заменяет последовательность любых символов (число символов в последовательности может быть от 0 и более) в проверяемом значении.

Если проверяемое значение соответствует образцу с учетом трафаретных символов, то значение предиката равно TRUE . Ниже приводится несколько примеров написания образцов.

Образец Описание
‘abc%’ Любые строки, которые начинаются с букв «abc»
‘abc_’ Строки длиной строго 4 символа, причем первыми символами строки должны быть «abc»
‘%z’ Любая последовательность символов, которая обязательно заканчивается символом «z»
‘%Rostov%’ Любая последовательность символов, содержащая слово «Rostov» в любой позиции строки
‘% % %’ Текст, содержащий не менее 2-х пробелов, например, «World Wide Web»

Найти все корабли, имена классов которых заканчиваются на букву ‘о’

Результатом выполнения запроса будет следующая таблица:

name class launched
Haruna Kongo 1916
Hiei Kongo 1914
Kirishima Kongo 1915
Kongo Kongo 1913
Musashi Yamato 1942
Yamato Yamato 1941

Найти все корабли, имена классов которых заканчиваются на букву ‘о’, но не на ‘go’

Name Class launched
Musashi Yamato 1942
Yamato Yamato 1941

Если искомая строка содержит трафаретный символ, то следует задать управляющий символ в предложении ESCAPE . Этот управляющий символ должен использоваться в образце перед трафаретным символом, сообщая о том, что последний следует трактовать как обычный символ. Например, если в некотором поле следует отыскать все значения, содержащие символ «_», то шаблон ‘%_%’ приведет к тому, что будут возвращены все записи из таблицы. В данном случае шаблон следует записать следующим образом:

Для проверки значения на соответствие строке «25%» можно воспользоваться таким предикатом:

Истинностное значение предиката LIKE присваивается в соответствии со следующими правилами:

  • если либо проверяемое значение, либо образец, либо управляющий символ есть NULL , истинностное значение равно UNKNOWN ;
  • в противном случае, если проверяемое значение и образец имеют нулевую длину, истинностное значение равно TRUE ;
  • в противном случае, если проверяемое значение соответствует шаблону, то предикат LIKE равен TRUE ;
  • если не соблюдается ни одно из перечисленных выше условий, предикат LIKE равен FALSE .
Оцените статью
SoftLast
Добавить комментарий