Оператор 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 |
Примеры в 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 . Ниже приводится несколько примеров написания образцов.
|
Найти все корабли, имена классов которых заканчиваются на букву ‘о’
Результатом выполнения запроса будет следующая таблица:
|
Найти все корабли, имена классов которых заканчиваются на букву ‘о’, но не на ‘go’
|
Если искомая строка содержит трафаретный символ, то следует задать управляющий символ в предложении ESCAPE . Этот управляющий символ должен использоваться в образце перед трафаретным символом, сообщая о том, что последний следует трактовать как обычный символ. Например, если в некотором поле следует отыскать все значения, содержащие символ «_», то шаблон ‘%_%’ приведет к тому, что будут возвращены все записи из таблицы. В данном случае шаблон следует записать следующим образом:
Для проверки значения на соответствие строке «25%» можно воспользоваться таким предикатом:
Истинностное значение предиката LIKE присваивается в соответствии со следующими правилами:
- если либо проверяемое значение, либо образец, либо управляющий символ есть NULL , истинностное значение равно UNKNOWN ;
- в противном случае, если проверяемое значение и образец имеют нулевую длину, истинностное значение равно TRUE ;
- в противном случае, если проверяемое значение соответствует шаблону, то предикат LIKE равен TRUE ;
- если не соблюдается ни одно из перечисленных выше условий, предикат LIKE равен FALSE .