Like sql: LIKE (Transact-SQL) — SQL Server
Содержание
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______’
В результате выполнения запроса будет выведена таблица с одной строкой:
Поделиться с друзьями
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 и содержит литерал %
.
Руководство по SQL. Предикат LIKE. – PROSELYTE
Для сравнения символьных строк на схожесть с определённым шаблоном в языке структурированных запросов SQL используется предикат LIKE. Существует два вида шаблонов, которые используются вместе с LIKE:
- Символ процента – ‘%’
- Символ подчеркивания – ‘_’
Символ процента обозначает один или несколько символов, а знак подчёркивания – одно число, или символ. Мы можем использовать символы в различных комбинациях.
Общий вид запроса с использованием предиката LIKE имеет следующий вид:
SELECT FROM имя талицы
WHERE имя_колонки LIKE '%XXXX'
или
SELECT FROM имя талицы
WHERE имя_колонки LIKE '%XXXX%'
или
SELECT FROM имя талицы
WHERE имя_колонки LIKE'_XXXX'
В данном примере ХХХХ представлены символьными строками.
Мы также можем использовать операторы AND/OR для комбинирования нескольких условий.
Пример:
Предположим, что у нас есть таблица developers, которая содержит следующие записи:
+----+-------------------+------------+------------+--------+
| ID | NAME | SPECIALTY | EXPERIENCE | SALARY |
+----+-------------------+------------+------------+--------+
| 1 | Eugene Suleimanov | Java | 2 | 2500 |
| 2 | Peter Romanenko | Java | 3 | 3500 |
| 3 | Andrei Komarov | JavaScript | 3 | 2500 |
| 4 | Konstantin Geiko | C# | 2 | 2000 |
| 5 | Asya Suleimanova | UI/UX | 2 | 1800 |
+----+-------------------+------------+------------+--------+
Допустим, что нам необходимо получить всех разработчиков, которые содержат в специальности последовательность символов ‘java’.
Для этого нам необходимо использовать следующую команду:
mysql> SELECT * FROM developers WHERE SPECIALTY LIKE '%java%';
В результате выполнения данного запроса мы получим следующий результат:
+----+-------------------+------------+------------+--------+
| ID | NAME | SPECIALTY | EXPERIENCE | SALARY |
+----+-------------------+------------+------------+--------+
| 1 | Eugene Suleimanov | Java | 2 | 2500 |
| 2 | Peter Romanenko | Java | 3 | 3500 |
| 3 | Andrei Komarov | JavaScript | 3 | 2500 |
+----+-------------------+------------+------------+--------+
Мы можем создавать любые шаблоны подстановки в зависимости от наших задач.
На этом мы заканчиваем изучение предиката LIKE.
В следующей статье мы рассмотрим, как получить определённое число первых записей из таблицы.
SQL: LIKE с OR против IN
Есть ли какая-то разница в производительности между следующим?
NAME LIKE '%EXPRESSION_1%'
OR NAME LIKE '%EXPRESSION_2%'
...
OR NAME LIKE '%EXPRESSION_N%'
VS
NAME IN (ACTUAL_VALUE_1,ACTUAL_VALUE_2,.., ACTUAL_VALUE_N)
sql
oracle11g
hql
query-performance
Поделиться
Источник
Divs
22 февраля 2016 в 14:37
3 ответа
- SQL Server 2005: использование оператора OR с оператором LIKE
Как я могу использовать оператор LIKE с оператором OR в SQL Server 2005? Например: SELECT * FROM table WHERE column_name LIKE ‘%boo%’ OR ‘%bar%’ Это, кажется, не работает ! EDIT 1 : ОТВЕТ НА ПЕРВЫЙ ОПУБЛИКОВАННЫЙ ОТВЕТ: Круто, это работает ! но я только что впервые обнаружил, что ваши условия…
- Использование LIKE с IN / OR в хранимой процедуре
Я пытаюсь создать хранимую процедуру в SQL Server 2008, где я пытаюсь реплицировать простой запрос SELECT Col1, Col2 FROM Table WHERE Col1 LIKE ‘A%’ OR Col1 LIKE ‘B%’ OR Col1 LIKE ‘C%’ как CREATE PROCEDURE usp_MySP @ColValues varchar(100) = NULL AS SELECT Col1, Col2 FROM Table WHERE (@ColValues IS…
2
Версия IN
потенциально намного, намного быстрее.
Эти две версии не делают одно и то же. Но, если любой из них соответствует вашим потребностям, версия IN
может воспользоваться индексом на NAME
. Версия LIKE
не может, потому что шаблон начинается с подстановочного знака.
Вы могли бы написать это как:
WHERE NAME LIKE 'EXPRESSION_%'
Если это соответствует вашим потребностям, он также может воспользоваться индексом на NAME
.
Поделиться
Gordon Linoff
22 февраля 2016 в 14:45
1
Вы можете просто попробовать использовать
NAME LIKE '%EXPRESSION_%'
Что касается производительности, то IN сравнительно быстрее, чем OR. Кроме того, вы можете подтвердить производительность, используя план выполнения ваших двух запросов.
Кроме того, как было отмечено выше, два запроса, которые вы показываете, отличаются.
Первый запрос:
NAME LIKE '%EXPRESSION_1%'
OR NAME LIKE '%EXPRESSION_2%'
...
OR NAME LIKE '%EXPRESSION_N%'
попытается получить результат, который содержит примерные данные, такие как
EXPRESSION_123
XXXEXPRESSION_1234
EXPRESSION_2323
EXPRESSION_2......
в то время как ваш второй запрос будет соответствовать записям, которые точно соответствуют
ACTUAL_VALUE_1,ACTUAL_VALUE_2.....
Поделиться
Rahul Tripathi
22 февраля 2016 в 14:39
0
Если вы используете выражение переменной, которое может быть изменено в соответствии с заданным параметром. Затем использование
declare @Expression1 varchar(50)
Set @Expression2 = '%'+ @Expression1 +'%'
NAME LIKE @Expression2
таким образом, какой бы параметр ни входил в @Expression1, он автоматически позаботится об этом.
Поделиться
Jai Prak
22 февраля 2016 в 14:48
- SQL Select IN против LIKE в предложении WHERE
Какой из них быстрее по производительности? SELECT field1, field2, field3, field4 FROM MyTable WHERE field5 LIKE ‘%AL’ против SELECT field1, field2, field3, field4 FROM MyTable WHERE field5 IN (‘AAL’, ‘IAL’) или это не имеет никакого значения?
- Эффективность SQL — [=] против [В] против [как] против [матчи]
Просто из любопытства мне было интересно, есть ли какие-либо различия в скорости/эффективности использования синтаксиса [ = ] по сравнению с [ in ] по сравнению с [ like ] по сравнению с [ matches ] (только для 1 значения) для sql. select field from table where field = value; против select field…
Похожие вопросы:
Существует ли комбинация «LIKE» и «IN» в SQL?
В SQL мне (к сожалению) часто приходится использовать условия LIKE из-за баз данных, которые нарушают почти все правила нормализации. Я не могу изменить это прямо сейчас. Но это не имеет отношения…
Объединение LIKE с IN в SQL
Вместо выполнения: SELECT в FROM б WHERE в LIKE ‘a%’ OR а LIKE ‘b%’ OR а LIKE ‘c%’ есть ли способ выполнить что-то, функционирующее подобно этому псевдокоду? SELECT в FROM б WHERE в IN (‘a%’, ‘b%’,…
SQL где предложение с LIKE и IN
Итак, у меня есть ужасный запрос о том, что current существует в MS Access, который я пытаюсь переписать в SQL Server. В основном я получаю данные из текстового файла, который пытаюсь отфильтровать…
SQL Server 2005: использование оператора OR с оператором LIKE
Как я могу использовать оператор LIKE с оператором OR в SQL Server 2005? Например: SELECT * FROM table WHERE column_name LIKE ‘%boo%’ OR ‘%bar%’ Это, кажется, не работает ! EDIT 1 : ОТВЕТ НА ПЕРВЫЙ…
Использование LIKE с IN / OR в хранимой процедуре
Я пытаюсь создать хранимую процедуру в SQL Server 2008, где я пытаюсь реплицировать простой запрос SELECT Col1, Col2 FROM Table WHERE Col1 LIKE ‘A%’ OR Col1 LIKE ‘B%’ OR Col1 LIKE ‘C%’ как CREATE…
SQL Select IN против LIKE в предложении WHERE
Какой из них быстрее по производительности? SELECT field1, field2, field3, field4 FROM MyTable WHERE field5 LIKE ‘%AL’ против SELECT field1, field2, field3, field4 FROM MyTable WHERE field5 IN…
Эффективность SQL — [=] против [В] против [как] против [матчи]
Просто из любопытства мне было интересно, есть ли какие-либо различия в скорости/эффективности использования синтаксиса [ = ] по сравнению с [ in ] по сравнению с [ like ] по сравнению с [ matches ]…
Сократите синтаксис SQL предложения LIKE до in
В SQL есть ли какой-нибудь способ сократить синтаксис из Select * from TableName where ColumnName like ‘%A%’ or ColumnName like ‘%B’ or ColumnName like ‘C%’ К Select * from TableName where…
sql запрос с комбинацией like и or
Мне нужно сделать что-то вроде этого запроса sql, но в codeigniter: SELECT `table`.* FROM (`table`) WHERE `name` LIKE ‘%9%’ OR `id` LIKE ‘%9%’ AND (`name` LIKE ‘%f%’ OR `id` LIKE ‘%f%’) Я пытался…
Как использовать like, or и when с orderby в sql
Нужно выбрать по ‘codevalue’ на основе подобного шаблона , а затем упорядочить их в определенном порядке . Я сделал следующий запрос, но sql через ошибку msg Неправильный синтаксис рядом с ключевым…
Использование условия SQL like для сравнения значений: синтаксис и примеры
От автора: условие SQL LIKE используется для сравнения значения с аналогичными значениями с использованием подстановочных операторов. В сочетании с оператором LIKE используются два подстановочных знака. Знак процента (%). Подчеркивание (_).
Знак процента представляет ноль, один или несколько символов. Символ подчеркивания представляет одно число или символ. Эти символы могут использоваться в различных комбинациях.
Синтаксис
SELECT FROM table_name
WHERE column LIKE ‘XXXX%’
или
SELECT FROM table_name
WHERE column LIKE ‘%XXXX%’
или
SELECT FROM table_name
WHERE column LIKE ‘XXXX_’
или
SELECT FROM table_name
WHERE column LIKE ‘_XXXX’
или
SELECT FROM table_name
WHERE column LIKE ‘_XXXX_’
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | SELECT FROM table_name WHERE column LIKE ‘XXXX%’
или
SELECT FROM table_name WHERE column LIKE ‘%XXXX%’
или
SELECT FROM table_name WHERE column LIKE ‘XXXX_’
или
SELECT FROM table_name WHERE column LIKE ‘_XXXX’
или
SELECT FROM table_name WHERE column LIKE ‘_XXXX_’ |
С помощью операторов AND или OR вы можете комбинировать N-ное количество условий. Здесь XXXX может быть любым числовым или строковым значением.
Бесплатный курс по PHP программированию
Освойте курс и узнайте, как создать динамичный сайт на PHP и MySQL с полного нуля, используя модель MVC
В курсе 39 уроков | 15 часов видео | исходники для каждого урока
Получить курс сейчас!
Пример
В следующей таблице приведено несколько примеров, в которых часть WHERE содержит разные условия LIKE с операторами «%» и «_»:
Давайте рассмотрим реальный пример. Возьмем таблицу CUSTOMERS, которая содержит следующие записи.
Ниже приведен код, который отображает все записи из таблицы CUSTOMERS, для которых значение в поле SALARY начинается с 200.
SELECT * FROM CUSTOMERS
WHERE SALARY LIKE ‘200%’;
SELECT * FROM CUSTOMERS WHERE SALARY LIKE ‘200%’; |
Этот код дает следующий результат:
Источник: //www.tutorialspoint.com/
Редакция: Команда webformyself.
Бесплатный курс по PHP программированию
Освойте курс и узнайте, как создать динамичный сайт на PHP и MySQL с полного нуля, используя модель MVC
В курсе 39 уроков | 15 часов видео | исходники для каждого урока
Получить курс сейчас!
Хотите изучить MySQL?
Посмотрите курс по базе данных MySQL!
Смотреть
SQL — Оператор LIKE
Класс LIKE используется для сравнения значения для аналогичных значений с использованием подстановочных знаков. Есть два подстановочных знака, используемые в сочетании с оператором LIKE.
- Знак процента (%)
- Подчеркивание (_)
Знак процента представляет ноль, один или несколько символов. Подчеркивание представляет собой одно целое число или символ. Эти символы могут быть использованы в комбинации.
Синтаксис
Базовый синтаксис % и _ выглядит следующим образом:
SELECT FROM table_name WHERE column LIKE 'XXXX%' или SELECT FROM table_name WHERE column LIKE '%XXXX%' или SELECT FROM table_name WHERE column LIKE 'XXXX_' или SELECT FROM table_name WHERE column LIKE '_XXXX' или SELECT FROM table_name WHERE column LIKE '_XXXX_'
Вы можете объединить N число условий с помощью операторов AND или OR. Здесь XXXX может быть любым числовым или строковым значением.
Пример
Следующая таблица содержит несколько примеров, показывающих, часть WHERE, имеющий LIKE с комбинациями знаков «_» «%»
Sr.No. | Заявление и описание |
---|---|
1 | WHERE SALARY LIKE ‘200%’ Находит все значения, которые начинаются с 200. |
2 | WHERE SALARY LIKE ‘%200%’ Находит все значения, которые имеют 200 в любом положении. |
3 | WHERE SALARY LIKE ‘_00%’ Находит все значения, которые имеют 00 во второй и третьей позиции. |
4 | WHERE SALARY LIKE ‘2_%_%’ Находит все значения, которые начинаются с 2, и по меньшей мере, 3-х символов в длину. |
5 | WHERE SALARY LIKE ‘%2’ Находит любые значения, которые заканчиваются на цифру 2. |
6 | WHERE SALARY LIKE ‘2%3’ Находит любые значения, которые имеют 2 во втором положении и в конце значение 3. |
7 | WHERE SALARY LIKE ‘2___3’ Находит любые значения в пять-значным числом, которые начинаются на 2 и заканчивается на 3. |
Возьмем реальный пример, рассмотрим таблицу клиентов, имеющих записи, как показано ниже.
+----+----------+-----+-----------+----------+ | ID | NAME | AGE | ADDRESS | SALARY | +----+----------+-----+-----------+----------+ | 1 | Maxim | 35 | Moscow | 21000.00 | | 2 | AndreyEx | 38 | Krasnodar | 55500.00 | | 3 | Oleg | 33 | Rostov | 34000.00 | | 4 | Masha | 35 | Moscow | 31500.00 | | 5 | Ruslan | 34 | Omsk | 43000.00 | | 6 | Dima | 32 | SP | 45000.00 | | 7 | Roma | 34 | SP | 10000.00 | +----+----------+-----+-----------+----------+
Ниже приведен пример, который будет отображать все записи из таблицы клиентов, где SALARY начинается с 4.
SQL> SELECT * FROM CUSTOMERS WHERE SALARY LIKE '4%';
Это выдаст следующий результат:
+----+----------+-----+-----------+----------+ | ID | NAME | AGE | ADDRESS | SALARY | +----+----------+-----+-----------+----------+ | 1 | Ruslan | 34 | Omsk | 43000.00 | | 3 | Dima | 32 | SP | 45000.00 | +----+----------+-----+-----------+----------+
Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.
Есть ли в SQL комбинация «LIKE» и «IN»?
Я знаю, что очень поздно, но у меня была похожая ситуация. Мне понадобился оператор «Like In» для набора хранимых процедур, который принимает много параметров, а затем использует эти параметры для агрегирования данных из нескольких систем RDBMS, поэтому никакие специфичные для RDBMS приемы не будут работать, однако хранимая процедура и любые функции будет работать на MS SQL Server, поэтому мы можем использовать T-SQL для функциональности генерации полных операторов SQL для каждой СУБД, но выходные данные должны быть достаточно независимыми от СУБД.
Это то, что я на данный момент придумал, чтобы превратить разделенную строку (например, параметр, входящий в хранимую процедуру) в блок SQL. Я называю это «лишайником» для «LIKE IN». Возьми?
Lichen.sql
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =======================================================================
-- Lichen - Scalar Valued Function
-- Returns nvarchar(512) of "LIKE IN" results. See further documentation.
-- CREATOR: Norman David Cooke
-- CREATED: 2020-02-05
-- UPDATED:
-- =======================================================================
CREATE OR ALTER FUNCTION Lichen
(
-- Add the parameters for the function here
@leadingAnd bit = 1,
@delimiter nchar(1) = ';',
@colIdentifier nvarchar(64),
@argString nvarchar(256)
)
RETURNS nvarchar(512)
AS
BEGIN
-- Declare the return variable here
DECLARE @result nvarchar(512)
-- set delimiter to detect (add more here to detect a delimiter if one isn't provided)
DECLARE @delimit nchar(1) = ';'
IF NOT @delimiter = @delimit
SET @delimit = @delimiter
-- check to see if we have any delimiters in the input pattern
IF CHARINDEX(@delimit, @argString) > 1 -- check for the like in delimiter
BEGIN -- begin 'like in' branch having found a delimiter
-- set up a table variable and string_split the provided pattern into it.
DECLARE @lichenTable TABLE ([id] [int] IDENTITY(1,1) NOT NULL, line NVARCHAR(32))
INSERT INTO @lichenTable SELECT * FROM STRING_SPLIT(@argString, ';')
-- setup loop iterators and determine how many rows were inserted into lichen table
DECLARE @loopCount int = 1
DECLARE @lineCount int
SELECT @lineCount = COUNT(*) from @lichenTable
-- select the temp table (to see whats inside for debug)
--select * from @lichenTable
-- BEGIN AND wrapper block for 'LIKE IN' if bit is set
IF @leadingAnd = 1
SET @result = ' AND ('
ELSE
SET @result = ' ('
-- loop through temp table to build multiple "LIKE 'x' OR" blocks inside the outer AND wrapper block
WHILE ((@loopCount IS NOT NULL) AND (@loopCount <= @lineCount))
BEGIN -- begin loop through @lichenTable
IF (@loopcount = 1) -- the first loop does not get the OR in front
SELECT @result = CONCAT(@result, ' ', @colIdentifier, ' LIKE ''', line, '''') FROM @lichenTable WHERE id = @loopCount
ELSE -- but all subsequent loops do
SELECT @result = CONCAT(@result, ' OR ', @colIdentifier, ' LIKE ''', line, '''') FROM @lichenTable WHERE id = @loopCount
SET @loopcount = @loopCount + 1 -- increment loop
END -- end loop through @lichenTable
-- set final parens after lichenTable loop
SET @result = CONCAT(@result, ' )')
END -- end 'like in' branch having found a delimiter
ELSE -- no delimiter was provided
BEGIN -- begin "no delimiter found" branch
IF @leadingAnd = 1
SET @result = CONCAT(' AND ', @colIdentifier, ' LIKE ''' + @argString + '''')
ELSE
SET @result = CONCAT(' ', @colIdentifier, ' LIKE ''' + @argString + '''')
END -- end "no delimiter found" branch
-- Return the result of the function
RETURN @result
END -- end lichen function
GO
Обнаружение разделителя возможно запланировано, но сейчас по умолчанию используется точка с запятой, так что вы можете просто вставить его default
туда. В этом, вероятно, есть ошибки. @leadingAnd
Параметр только немного значение , чтобы определить , если вы хотите , ведущий «И» положить в передней части блока , так что прекрасно вписывается в другие предложения WHERE добавлений.
Пример использования (с разделителем в argString)
SELECT [dbo].[Lichen] (
default -- @leadingAND, bit, default: 1
,default -- @delimiter, nchar(1), default: ';'
,'foo.bar' -- @colIdentifier, nvarchar(64), this is the column identifier
,'01%;02%;%03%' -- @argString, nvarchar(256), this is the input string to parse "LIKE IN" from
)
GO
Вернет nvarchar (512), содержащий:
AND ( foo.bar LIKE '01%' OR foo.bar LIKE '02%' OR foo.bar LIKE '%03%' )
Он также пропустит блок, если на входе нет разделителя:
Пример использования (без разделителя в argString)
SELECT [dbo].[Lichen] (
default -- @leadingAND, bit, default: 1
,default -- @delimiter, nchar(1), default: ';'
,'foo.bar' -- @colIdentifier, nvarchar(64), this is the column identifier
,'01%' -- @argString, nvarchar(256), this is the input string to parse "LIKE IN" from
)
GO
Вернет nvarchar (512), содержащий:
AND foo.bar LIKE '01%'
Я собираюсь продолжить работу над этим, поэтому, если я что-то упустил (явно очевидное или иное), пожалуйста, не стесняйтесь комментировать или обратиться.
SQL Like: введение и обзор логического оператора
SQL Like — это логический оператор, который используется для определения того, соответствует ли конкретная строка символов заданному шаблону. Обычно он используется в предложении Where для поиска указанного шаблона в столбце.
Этот оператор может быть полезен в случаях, когда нам нужно выполнить сопоставление с образцом вместо равенства или неравенства. SQL Like используется, когда мы хотим вернуть строку, если конкретная символьная строка соответствует указанному шаблону.Шаблон может представлять собой комбинацию обычных символов и подстановочных знаков.
Чтобы вернуть строку назад, обычные символы должны точно соответствовать символам, указанным в строке символов. Подстановочные знаки могут быть сопоставлены с произвольными частями символьной строки.
Давайте воспользуемся образцом базы данных AdventureWorks и рассмотрим несколько разных операторов SQL Like с подстановочными знаками «%» и «_».
Использование подстановочного знака% (представляет ноль, один или несколько символов)
Приведенный ниже запрос возвращает все телефонные номера с кодом зоны «415» в таблице «PersonPhone»:
ВЫБРАТЬ стр.FirstName, p.LastName, ph.PhoneNumber ОТ Лиц. автор: p.LastName; ГО |
Обратите внимание, что в предложении Where указан символ «415%». Это означает, что SQL Server будет искать число 415, за которым следует любая строка из нуля или более символов.Вот результат:
Оператор Not logic меняет значение любого логического выражения на противоположное. Итак, если мы просто укажем Not like с подстановочным знаком «%» в предложении SQL Like, добавим одно дополнительное условие и поместим его в тот же оператор, что и выше, мы должны получить такой запрос:
ВЫБРАТЬ p.FirstName, p.LastName, ph.PhoneNumber ОТ Лиц.PersonPhone AS ph ВНУТРЕННЕЕ СОЕДИНЕНИЕ Person.Person AS p НА тел. BusinessEntityID = p.BusinessEntityID ГДЕ ph.PhoneNumber НЕ КАК ‘415%’ И p.FirstName = ‘Gail’ ORDER BY p.LastName; ГО |
На этот раз запрос вернул все записи в таблице «PersonPhone», которые имеют коды городов, отличные от 415:
Кроме того, предположим, что мы хотим найти все записи, в которых имя содержит «ssa».Мы можем использовать запрос ниже:
ВЫБРАТЬ p.FirstName, p.LastName FROM Person.Person AS p WHERE LastName LIKE ‘% ssa%’ ORDER BY p.LastName; ГО |
Обратите внимание, что, используя ‘%’ до и после «ssa», мы говорим SQL Server найти все записи, в которых «Person.Person» имеет символы «ssa», и не имеет значения, какие другие символы находятся до и после « ssa »:
Использование подстановочного знака «_» (представляет один символ)
Знак подчеркивания SQL Like e.грамм. „Используется, когда мы хотим проверить один символ, который может быть чем угодно, и предоставить остальные символы для нашего соответствия.
Предположим, что если мы хотим вернуть все записи, в которых первый символ таблицы «FirstName» может быть любым, а остальные должны быть «en». Используйте запрос ниже:
ВЫБРАТЬ p.FirstName, p.MiddleName FROM Person.Person p WHERE p.FirstName LIKE ‘_en’; ГО |
Вот результат:
Обратите внимание, что комбинация подстановочных знаков также может использоваться в конце шаблона поиска. Например, чтобы вернуть все телефонные номера, код зоны которых начинается с 6 и заканчивается на 2 в таблице «PersonPhone», используйте следующий запрос:
ВЫБРАТЬ стр.PhoneNumber ОТ Person.PersonPhone pp ГДЕ pp.PhoneNumber КАК ‘6_2%’ GO |
Обратите внимание, что подстановочный знак «%» используется после символа подчеркивания, поскольку код города является первой частью телефонного номера, а дополнительные символы существуют после в значении столбца:
Использование квадратных скобок [] (любой отдельный символ в указанном диапазоне [a-t] или набор [abc])
Оператор SQL Like с квадратными скобками используется, когда мы хотим иметь диапазон.Допустим, мы хотим найти все строки, в которых первый символ «Имя» начинается с [a-f]. Используйте запрос ниже:
ВЫБЕРИТЕ BusinessEntityID, FirstName, LastName FROM Person.Person WHERE FirstName LIKE ‘[a-f]%’; ГО |
Как видно, мы использовали диапазон [a-f]%. Это означает, что нужно вернуть первый символ от a до f, а после этого любые символы подойдут, потому что после этого мы использовали «%»:
Чтобы вернуть любой отдельный символ в наборе, используйте приведенный ниже пример для поиска сотрудников в таблице «Человек» с именем Шерил или Шерил:
ВЫБЕРИТЕ BusinessEntityID, FirstName, LastName FROM Person.Человек ГДЕ Имя LIKE ‘[CS] heryl’; ГО |
В этом случае этот запрос вернет только Шерил, но он также вернул бы Шерил, если бы у нас были какие-либо записи в базе данных:
Вот еще один пример, когда у нас действительно смешанные результаты:
ВЫБЕРИТЕ Фамилию, Имя ОТ человека.] квадратные скобки (любой отдельный символ за пределами указанного диапазона [a-t] или набора [abc]) Как вы могли догадаться, это противоположность предыдущему использованию оператора SQL Like с квадратными скобками. Допустим, мы хотим вернуть все записи, в которых первый символ «Имя» не начинается с [от a до f]:
Обратите внимание, что он вернул только те записи, которые не начинаются с какого-либо символа от a до f: В данном примере, допустим, мы хотим получить все записи, в которых «FirstName» не начинается с a, d, j. Мы можем использовать запрос ниже:
Вот результат: Использование escape-предложенияЭто один из предикатов типа SQL, который используется для указания escape-символа. В приведенном ниже запросе используется предложение Escape и escape-символ:
Он возвращает точную строку символов 10-15% в столбце c1 таблицы mytbl2: Я надеюсь, что эта статья об операторе SQL Like была информативной, и благодарю вас за то, что вы ее прочитали. Боян, он же «Бокси», выпускник AP в области ИТ-технологий, специализирующийся на сетях и электронных технологиях Копенгагенской школы дизайна и технологий, является аналитиком программного обеспечения с опытом в области обеспечения качества, поддержки программного обеспечения, пропаганды продуктов и взаимодействия с пользователями. Он много писал о SQL Shack и ApexSQL Solution Center по самым разным темам, от клиентских технологий, таких как разрешение 4K и тематика, обработки ошибок до стратегий индексации и мониторинга производительности. Боян работает в ApexSQL в Нише, Сербия, как неотъемлемая часть команды, занимающейся проектированием, разработкой и тестированием следующего поколения инструментов баз данных, включая MySQL и SQL Server, а также автономных инструментов и интеграции с Visual Studio, SSMS. и VSCode. Подробнее о Бояне на LinkedIn Просмотреть все сообщения Бояна Петровича Последние сообщения Бояна Петровича (посмотреть все) Как использовать LIKE в SQLБаза данных:Операторы:LIKE, WHERE Проблема:Вы хотите найти в строке подстроку, соответствующую шаблону. Пример: В нашей базе данных есть таблица с именем customer с данными в следующих столбцах:
Давайте посмотрим на несколько примеров сопоставления с образцом в SQL. Пример 1:Давайте отобразим имя, фамилию и город каждого клиента, название города которого начинается с буквы «S». Решение:ВЫБЕРИТЕ last_name, first_name, city ОТ заказчика ГДЕ город НРАВИТСЯ "S%";
Мы использовали подстановочный знак%, который представляет ноль или более неизвестных символов.Этот подстановочный знак можно использовать в любом месте строки. Пример 2:Давайте покажем имя, фамилию и город каждого покупателя, название города которого состоит ровно из пяти символов. Решение:ВЫБЕРИТЕ last_name, first_name, city ОТ заказчика ГДЕ город КАК '_____'; Вот результат:
Подстановочный знак подчеркивания может использоваться для представления одного неизвестного символа.Таким образом, используя пять из них подряд, мы можем представить все строки длиной пять символов. В нашем примере единственный город, соответствующий этому описанию, — это Сеул. Пример 3:Давайте покажем имя, фамилию и город каждого клиента, чей город начинается с буквы «S» и имеет букву «o» в качестве предпоследнего символа. Решение:ВЫБЕРИТЕ last_name, first_name, city ОТ заказчика ГДЕ город КАК 'S% o__'; Вот результат:
Запрос вернул только две записи: Лиза Блэк из S ingap o re и Milan Brick из S e o ul.Эти города соответствуют заданному шаблону. Здесь мы объединили оба символа подстановки, чтобы создать более конкретный шаблон: все строки, начинающиеся с заглавной буквы «S» и содержащие любое количество других символов после этого, при условии, что предпоследний символ является строчной буквой «o». ‘ Обсуждение: Если вы хотите выбрать записи, в которых строка соответствует определенному шаблону, вы можете использовать предложение Как мы видели в примерах, вы можете использовать два специальных символа, известных как подстановочные знаки , для представления неизвестных символов:
Вы можете комбинировать эти подстановочные знаки для получения действительно эффективных результатов.Вы также можете связать более одного условия SQL LIKE | Базовый SQLНачиная с этого места? Этот урок является частью полного руководства по использованию SQL для анализа данных. Проверьте начало. В этом уроке мы рассмотрим: Оператор SQL LIKE В этом примере результаты из набора данных Billboard Music Charts будут включать строки, для которых Запустите код, чтобы увидеть, какие результаты возвращаются. Примечание: Подстановочные знаки и ILIKE Вы также можете использовать Отточите свои навыки SQLПрактическая задачаНапишите запрос, который возвращает все строки, для которых Ludacris был членом группы. Попробуй это Практическая задачаНапишите запрос, который возвращает все строки, для которых первый исполнитель, указанный в группе, имеет имя, начинающееся с «DJ». Попробуй это Оператор SQL LIKE — w3resource
НРАВИТСЯ ОператорLIKE — это стандартный оператор ANSI / ISO для сравнения значения столбца с другим значением столбца или строкой в кавычках.Возвращает либо 1 (ИСТИНА), либо 0 (ЛОЖЬ) . Оператор SQL LIKE применяется только к полю типа CHAR или VARCHAR, чтобы соответствовать шаблону. Чтобы соответствовать шаблону из слова, с оператором LIKE могли использоваться специальные символы и символы подстановки. Оператор LIKE можно использовать в любом допустимом операторе SQL, например Синтаксис: ВЫБРАТЬ [* | column_list] FROM <имя_таблицы> WHERE выражение [НЕ] LIKE шаблон [ESCAPE escape_sequence] Параметры:
Подстановочные знаки SQL : Подстановочные знаки SQL можно использовать для поиска данных в таблице. Подстановочные знаки SQL используются с оператором SQL LIKE. Логический оператор NOT в операторе select может использоваться как оператор NOT LIKE с подстановочными знаками. В SQL используются подстановочные знаки:
Графическое представление: Оператор SQL LIKE Примеры: оператор SQL LIKEПроцент подстановочных знаков SQL (%) Образец таблицы: заказчик Чтобы получить cust_code, cust_name, cust_city и cust_country из таблицы customer со следующим условием — 1. «cust_name» должно начинаться с буквы «S», можно использовать следующий оператор SQL: Выход: CUST_CODE CUST_NAME CUST_CITY CUST_COUNTRY ---------- -------------------- --------------- ----- -------------- C00015 Стюарт Лондон Великобритания C00005 Сасикант Мумбаи Индия C00006 Шилтон Торенто Канада C00017 Шринивас Бангалор Индия C00012 Стивен Сан-Хосе США C00011 Сундария Ченнаи Индия Процент подстановочных знаков SQL (%) с логическим НЕ Пример таблицы: агенты Чтобы получить все столбцы из таблицы «агенты» с условием — 1.»имя_агента» не начинается с буквы «М», можно использовать следующий оператор SQL: Выход: AGENT_CODE AGENT_NAME КОМИССИЯ РАБОЧЕЙ_ЗОНЫ PHONE_NO COUNTRY ---------- -------------------- --------------- ----- ----- --------------- -------- A003 Алекс Лондон .13 075-12458969 A001 Subbarao Bangalore.14 077-12346674 A009 Бенджамин Хэмпшер .11 008-22536178 A007 Рамасундар Бангалор .15 077-25814763 A008 Элфорд Нью-Йорк .12 044-25874365 A011 Рави Кумар Бангалор .15 077-45625874 A010 Сантакумар Ченнаи .14 007-22388644 A012 Люсида Сан-Хосе .12 044-52981425 A005 Андерсон Брисбан.13 045-21447739 A004 Иван Торенто .15 008-22544166 Равно (=) по сравнению с КАК Оператор равенства (=) является оператором сравнения и используется для проверки равенства двух чисел или выражений. Например: Оператор LIKE проверяет, соответствует ли конкретная строка символов заданному шаблону. Например: LIKE обычно используется только со строками, а equals (=) используется для точного сопоставления и кажется более быстрым. Пример: подстановочные знаки SQL, подчеркивание (_) Символ подчеркивания (_) представляет отдельный символ, соответствующий шаблону из слова или строки. Для соответствия шаблону из нескольких символов можно использовать более одного (_) символа подчеркивания. Образец таблицы: заказчик Чтобы получить cust_code, cust_name, cust_city и cust_country из таблицы customer со следующими условиями — 1. «cust_name» должно начинаться с буквы «R», 2.третья буква «cust_name» должна быть «m», 3. и вторая буква «cust_name» может быть любой, можно использовать следующий оператор SQL: Выход: CUST_CODE CUST_NAME CUST_CITY CUST_COUNTRY ---------- -------------------- --------------- ----- -------------- C00007 Раманатан Ченнаи Индия C00009 Рамеш Мумбаи Индия Подстановочные знаки SQL подчеркивание (_) несколько символов Образец таблицы: заказчик Чтобы получить cust_code, cust_name, cust_city и cust_country из таблицы customer со следующими условиями — 1.первые три буквы «cust_name» могут быть любой буквой 2. четвертая буква «cust_name» должна быть «l». 3. а остальные могут быть любыми можно использовать следующий оператор SQL: Выход: CUST_CODE CUST_NAME CUST_CITY CUST_COUNTRY ---------- -------------------- --------------- ----- ------------- C00023 Карл Лондон Великобритания C00006 Шилтон Торенто Канада Подстановочные знаки подчеркивания (_) SQL для определенной длины Образец таблицы: заказчик Чтобы получить cust_code, cust_name, cust_city и cust_country из таблицы customer со следующими условиями — 1.первые три буквы «cust_name» могут быть любой буквой 2. четвертая буква «cust_name» должна быть «l». 3. и строка должна состоять из 4 букв можно использовать следующий оператор SQL: Выход: CUST_CODE CUST_NAME CUST_CITY CUST_COUNTRY ---------- -------------------- --------------- ----- --------------- C00023 Карл Лондон Великобритания Пример: подстановочные знаки SQL [charlist] [список символов] WILDCARDS используются для представления любого отдельного символа в списке символов.abi]% ‘; Пример: подстановочные знаки SQL [! Charlist] Пример таблицы: агенты Чтобы получить все строки из таблицы «агенты» с условием — 1. «имя_агента» не должно начинаться с буквы «a», «b» или «i», можно использовать следующий оператор SQL: См. Нашу базу данных моделей Практические упражнения SQL Хотите улучшить статью выше? Публикуйте свои заметки / комментарии / примеры через Disqus. Предыдущая: СУЩЕСТВУЕТ Использование оператора SQL LIKE для запроса данных на основе шаблоновРезюме : в этом руководстве мы покажем вам, как использовать оператор SQL LIKE для запроса данных на основе шаблонов. Введение в оператор SQL LIKE Оператор SQL предоставляет два подстановочных символа, которые позволяют создавать шаблоны. Эти два символа подстановки — процент (%) и знак подчеркивания (_).
Синтаксис оператора
Тип данных столбца в предложении Примеры использования оператора LIKE в SQL Давайте рассмотрим несколько примеров использования оператора Оператор SQL LIKE с подстановочным знаком процента (%) Примеры Предположим, вы хотите найти сотрудника, чья фамилия начинается с буквы
Шаблон «D%» соответствует любой строке, которая начинается с символа «D» и заканчивается любыми символами. Чтобы найти сотрудников, имена которых заканчиваются на «t», вы можете выполнить следующий запрос:
Шаблон «% t» соответствует любой строке, которая заканчивается символом «t». Вы можете поместить подстановочный знак «%» в начало и конец строки, чтобы соответствовать любой строке, содержащей строку внутри подстановочных знаков.Например, чтобы найти сотрудников, чьи фамилии содержат строку
Пример комбинации двух подстановочных знаковВы можете комбинировать два подстановочных символа «%» и «_» для создания шаблона. Например, вы можете найти сотрудника, фамилия которого начинается с любого символа, за которым следует символ a и заканчивается любыми символами, как следующий запрос:
Оператор SQL LIKE с оператором NOT Оператор
Экранирующие символы подстановкиЕсли шаблон, который вы хотите сопоставить, содержит подстановочные знаки, например, 5% или _10. Чтобы использовать этот шаблон, вам нужно экранировать символы подстановки в шаблоне. В разных продуктах баз данных есть разные способы экранирования подстановочных знаков ( В следующем примере показано, как избежать подстановочного символа с помощью символа обратной косой черты (\):
The
Шаблон В этом руководстве вы узнали, как использовать оператор SQL LIKE Резюме : в этом руководстве вы узнаете, как использовать оператор SQL Введение в оператор LIKE в SQL Иногда полезно проверить, соответствует ли выражение определенному шаблону, например, чтобы найти всех сотрудников, имена которых начинаются с Оператор
Если выражение соответствует шаблону, оператор Оператор Для создания шаблона используются два подстановочных символа SQL:
В следующей таблице показаны некоторые паттерны и их значения:
Если вы хотите сопоставить подстановочные знаки% или _, вы должны использовать символ обратной косой черты \, чтобы его избежать.Если вы хотите использовать другой escape-символ, а не обратную косую черту, используйте предложение
Примеры оператора SQL LIKE Мы будем использовать таблицу Чтобы найти всех сотрудников, имена которых начинаются с
Посмотрите в действии Чтобы найти всех сотрудников, чьи имена заканчиваются на
Посмотреть в действии Следующий оператор находит всех сотрудников, чьи фамилии содержат слово
Посмотреть в действии Следующий оператор извлекает сотрудников, имена которых начинаются с
Посмотреть в действии Следующий оператор выбирает сотрудников, имена которых начинаются с любого количества символов и за которыми следует не более одного символа.
Посмотреть в действии Оператор SQL NOT LIKE Чтобы отменить результат оператора
Например, чтобы найти всех сотрудников, имена которых начинаются с
Посмотреть в действии В этом руководстве вы узнали, как использовать оператор SQL LIKE для выбора значений, соответствующих определенному шаблону. Было ли это руководство полезным? SQL LIKE Operator — Учебник РеспубликаВ этом руководстве вы узнаете, как получить данные на основе частичного совпадения. Сопоставление с образцом До сих пор вы видели условия, которые определяют точную строку, например Оператор
Вот несколько примеров, показывающих, как использовать оператор
Давайте применим утверждения, которые мы обсуждали выше, на практике, выполнив поиск в некоторых записях. Допустим, у нас есть таблица сотрудников в нашей базе данных со следующими записями: + -------- + ------------------ + ------------ + -------- + --------- + | emp_id | emp_name | найм_дата | зарплата | dept_id | + -------- + ------------------ + ------------ + -------- + --------- + | 1 | Итан Хант | 2001-05-01 | 5000 | 4 | | 2 | Тони Монтана | 2002-07-15 | 6500 | 1 | | 3 | Сара Коннор | 2005-10-18 | 8000 | 5 | | 4 | Рик Декард | 2007-01-03 | 7200 | 3 | | 5 | Мартин Бланк | 2008-06-24 | 5600 | NULL | | 6 | бистро simons | 2009-04-01 | 6000 | 1 | + -------- + ------------------ + ------------ + -------- + --------- + Теперь предположим, что вы хотите узнать всех сотрудников, чьи имена начинаются с буквы S. После выполнения запроса вы получите примерно такой результат: + -------- + ------------------ + ------------ + -------- + --------- + | emp_id | emp_name | найм_дата | зарплата | dept_id | + -------- + ------------------ + ------------ + -------- + --------- + | 3 | Сара Коннор | 2005-10-18 | 8000 | 5 | | 6 | бистро simons | 2009-04-01 | 6000 | 1 | + -------- + ------------------ + ------------ + -------- + --------- + В недвоичных строках MySQL ( Это означает, что если вы выполняете поиск с Теперь этот оператор вернет только тех сотрудников, чье имя начинается с заглавной буквы S: + -------- + ------------------ + ------------ + -------- + --------- + | emp_id | emp_name | найм_дата | зарплата | dept_id | + -------- + ------------------ + ------------ + -------- + --------- + | 3 | Сара Коннор | 2005-10-18 | 8000 | 5 | + -------- + ------------------ + ------------ + -------- + --------- + Примечание: Если вы хотите, чтобы столбец всегда обрабатывался с учетом регистра, объявите его с учетом регистра или двоичной сортировкой, чтобы избежать проблем с производительностью. |