Like ms sql: LIKE (Transact-SQL) — SQL Server

Содержание

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 начинается с ‘Б’.
Например:

Transact-SQL

SELECT * FROM employees WHERE last_name LIKE ‘Б%’;

SELECT *

  FROM employees

WHERE last_name LIKE ‘Б%’;

Этот пример условия SQL Server LIKE вернет всех employees у которых last_name будет начинаться на ‘Б’ такие как ‘Брошкин’, ‘Баранников’, ‘Богомолец’ и т.д.

Вы также можете использовать групповой символ % несколько раз в одной строке. Например:

Transact-SQL

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. Помните, что _ ищет только один символ.
Например:

Transact-SQL

SELECT * FROM employees WHERE last_name LIKE ‘Кр_т’;

SELECT *

  FROM employees

WHERE last_name LIKE ‘Кр_т’;

Этот пример условия SQL LIKE возвращает всех employees (сотрудников), чье имя last_name равно 4 символам, причем первые два символа — «Кр», а последний символ — «т». Например, он может вернуть сотрудников, чье last_name является «Крот», «Крат», «Крут», «Крит» и т.д.

Вот еще один пример:

Transact-SQL

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. Помните, что то, что содержится в квадратных скобках, это символы, которые вы пытаетесь сопоставить.
Например:

Transact-SQL

SELECT * FROM employees WHERE first_name LIKE ‘К[ио]тов’;

SELECT *

  FROM employees

WHERE first_name LIKE ‘К[ио]тов’;

Этот пример условия LIKE SQL Server возвращает всех employees, чье имя first_name равно 5 символам, причем первый символ — «К», а три последних символа — «тов», а второй символ — «и» или «о». ио]тов’;

Этот пример условия SQL Server LIKE возвращает всех сотрудников, чье имя first_name равно 5 символам, причем первый символ — «К», а три последних символа — «тов», а второй символ не является «и» или «о». Таким образом, в этом случае он будет соответствовать таким значениям, как «Катов», «Кутов», «Кетов» и т.д. Но это не будет соответствовать ни «Китов», ни «Котов».

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

Затем давайте посмотрим, как использовать SQL Server NOT Operator с помощью подстановочных символов.

Будем использовать % с оператором NOT. Вы также можете использовать условие SQL LIKE для поиска employees (сотрудников), имя которых не начинается с буквы «Б».
Например:

Transact-SQL

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).
Например:

Transact-SQL

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.

Transact-SQL

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.
Например:

Transact-SQL

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_».

Как использовать регулярные выражения в SQL Server с оператором LIKE

Регулярные выражения — это фундаментальный навык для всех, кто хочет искать и манипулировать строками. Вы можете указать точные и сложные выражения, используя регулярное выражение для поиска и замены различных строк и шаблонов. В таких инструментах, как SSMS, шаблоны регулярных выражений можно указать в параметрах «Найти что» и «Найти и заменить».

Однако в этом руководстве мы рассмотрим, как выполнять запросы регулярных выражений в T-SQL с использованием операторов LIKE и NOT LIKE.

ПРИМЕЧАНИЕ. Регулярные выражения — это всеобъемлющая тема, и ее невозможно описать в одном руководстве. Вместо этого мы сосредоточимся на большинстве команд и полезных регулярных выражений, которые вы можете использовать в своих повседневных операциях с базой данных.

В T-SQL мы можем определять регулярные выражения с помощью оператора LIKE. Оператор возьмет соответствующее выражение и найдет все совпадающие шаблоны.

В SQL Server существуют различные типы регулярных выражений:

  1. Алфавитное регулярное выражение
  2. Числовое регулярное выражение
  3. Регулярное выражение специального символа
  4. RegEx с учетом регистра
  5. Регулярное выражение исключения

Давайте разберемся, как определить регулярное выражение в SQL Server.

Примеры регулярных выражений SQL Server

Давайте разберемся, как использовать регулярные выражения в SQL Server, используя практические примеры. В этой статье мы будем использовать образец базы данных salesdb.

Образец базы данных можно загрузить со следующего ресурса:

Пример 1

В следующем примере запроса используется регулярное выражение для поиска названия продуктов, начинающихся с буквы L:

USE salesdb;
ВЫБЕРИТЕ  Имя ИЗ ПРОДУКТОВ ГДЕ Имя НРАВИТСЯ ‘[L]%’; Пример 2 мы можем сделать следующее:

ВЫБЕРИТЕ  Имя ИЗ Продукты ГДЕ Имя НРАВИТСЯ ‘[L][O]%’;

Запрос должен возвращать названия продуктов, начинающиеся с LO. Результирующий набор выглядит следующим образом:

Пример 3

Чтобы отфильтровать более двух букв, укажите каждую букву в квадратных скобках, как показано: ][К]%’;

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

Пример 4

Предположим, вы хотите отфильтровать продукты, соответствующие определенному диапазону строк. Например, товары, начинающиеся с символов между L – P:

ВЫБЕРИТЕ  Имя ИЗ Продукты ГДЕ Имя НРАВИТСЯ ‘[L-P]%’;

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

Пример 5

Вы также можете отфильтровать несколько условий совпадения в одном запросе, как показано:

SELECT  Name FROM Products WHERE Name LIKE ‘[LP][a-o]%’ ;

Пример набора результатов:

Пример 6

Предположим, вы хотите получить продукты, оканчивающиеся на определенный символ? В этом случае вы можете изменить положение процента, как показано на рисунке:

ВЫБЕРИТЕ  Имя ИЗ Продукты ГДЕ Имя НРАВИТСЯ ‘%[pe]’; Пример 7 ]’;

Приведенный выше запрос должен вернуть набор результатов в виде:

Пример 8

Что делать, если вы хотите исключить определенные символы из запроса фильтра? Вы можете использовать 9являюсь]%’;

В результатах должны быть исключены буквы от a до m.

Пример 9

Предположим, вы хотите найти товары, название которых содержит номер? Мы можем выполнить запрос, как показано ниже:

SELECT  * FROM Products WHERE Name LIKE ‘%[0-9]’;

Результат должен быть следующим:

Примечание. Вы можете использовать оператор NOT LIKE, чтобы отрицать результат регулярного выражения.

Заключение

В этой статье вы узнали, как использовать регулярные выражения в SQL Server с помощью оператора LIKE. Мы надеемся, что вы нашли эту статью полезной. Ознакомьтесь с дополнительными статьями Linux Hint, чтобы получить советы и информацию, а дополнительные сведения о RegEx можно найти в документации по SQL Server.

Оператор SQL Server LIKE с примерами — Учебное пособие по SQL Server

Цель обучения

Цель этого учебного пособия по SQL Server — научить вас использовать логический оператор LIKE для сопоставления с шаблоном.

Что такое оператор

LIKE в SQL Server?

Оператор SQL Server LIKE выполняет гибкое сопоставление шаблонов с помощью подстановочных знаков, что устраняет необходимость указывать точный шаблон или весь шаблон. Его можно использовать в SELECT , UPDATE или DELETE запрос и является альтернативой IN, = и !=.

Операция

Оператор SQL Server LIKE следует за предложением WHERE в запросе SQL и возвращает те строки в наборе результатов, которые соответствуют указанному шаблону. Также можно свести на нет действие оператора НРАВИТСЯ, добавив НЕ (что делает его НЕ НРАВИТСЯ), чтобы запрос возвращал набор результатов, который не соответствует указанному шаблону. Различные подстановочные знаки, которые можно использовать с оператором LIKE, обсуждаются ниже.

  1. % (Процент) – Процент используется для соответствия одному или нескольким символам в шаблоне и может быть указан в начале, конце или в середине шаблона для сопоставления.
  2. _ (Подчеркивание) — Подчеркивание используется для сопоставления одного символа в шаблоне и может быть указано в начале, конце или в середине шаблона для сопоставления.
  3. [] Скобка — Скобка используется для сопоставления одного символа из списка или диапазона символов и может быть указана в начале, конце или в середине шаблона для сопоставления. 9] Caret — После знака вставки в квадратных скобках следует список символов или диапазон символов для отрицательного соответствия одному символу в шаблоне, т. е. для проверки и гарантии того, что оцениваемый шаблон не содержит этот символ (символы) в указанной позиции.
  4. (!) Восклицательный знак — Восклицательный знак используется в качестве escape-символа для соответствия символам, которые обычно используются в качестве подстановочных знаков (т. е. всем упомянутым выше символам) в запросе LIKE. Символ ESCAPE указывает оператору LIKE рассматривать любой подстановочный знак, указанный после escape-символа, как обычный обычный символ в шаблоне.

SQL Server

Оператор LIKE Синтаксис

Основной синтаксис оператора LIKE SQL Server следующий.

 SELECT выражения
ИЗ столов
ГДЕ выражение LIKE | НЕ НРАВИТСЯ [шаблон [ESCAPE escape_character]]; 

В этом синтаксисе

  • выражений — выражения, определяющие здесь столбцы или вычисления, которые вы хотите получить. Если вы хотите получить все столбцы, просто используйте * вместо выражений.
  • таблицы — одна или несколько таблиц, из которых вы хотите получить данные.
  • ГДЕ условия —
      Необязательно. Это используется для указания некоторых условий при выборе данных. Если вы не используете предложение WHERE, будут выбраны все доступные строки.
  • LIKE – Логический оператор, используемый для сопоставления со строковым шаблоном.
  • NOT LIKE — Логический оператор, используемый для отрицательного соответствия шаблону строки.
  • шаблон – Строка, состоящая из алфавита, цифры, специального символа (включая подстановочные знаки) или одного или всех из них.
  • ВЫХОД – Дополнительно. Ключевое слово, используемое для указания символа, используемого в качестве escape-символа.
  • escape-символ — необязательно. Символ, используемый в качестве escape-символа. Обычно !.

Оператор SQL Server LIKE Примеры

ПРИМЕЧАНИЕ. Столбцы также называются полями или атрибутами, и эти термины взаимозаменяемы.

Давайте посмотрим, как это работает со всеми подстановочными знаками и типами запросов. Предположим, у нас есть таблица клиентов с приведенными ниже данными. Мы запросим его, используя LIKE, чтобы продемонстрировать различные сценарии использования.

customer_id first_name last_name customer_email customer_comment
1 Alicia Keys alicia_alicia@gmail. com Хочу скидку 15% на следующую покупку
2 Инди Росси [email protected] Когда следующая распродажа?
3 Джек Смит [email protected] Есть ли распродажа на следующей неделе? Какая % скидка?
4 Пит Уильямс [email protected] @help, служба поддержки
5 Casey Kugelman [email protected] @help, please call me back
6 Lauren Crow [email protected] Where новые обновления продукта?
7 Стивен Fleming [email protected] NO Comments ..
NO.0246 [email protected] Нужен обратный звонок и возврат 15%
Таблица клиентов (содержит информацию о клиенте)

1) SQL Server

LIKE – % (Letpercentage) 4 подстановочных знака, см. 9037 как мы можем использовать символ % в разных позициях в шаблоне для сопоставления нескольких символов с использованием таблицы клиентов.

a) Проценты в конце примера

Приведенный ниже запрос является примером использования % для перечисления комментариев клиентов из таблицы клиентов, которые начинаются с буквы «w».

 ВЫБОР *
ОТ клиентов
ГДЕ customer_comment НРАВИТСЯ 'w%'; 

Запрос выдаст следующий результат.

customer_id first_name last_name customer_email customer_comment
2 Indi Rossi [email protected] When is следующая большая распродажа?
6 Lauren Crow [email protected] Где новые обновления продуктов?
b) Проценты в начале примера

Приведенный ниже запрос является примером использования % для перечисления клиентов, у которых есть идентификаторы электронной почты в gmail, т. е. идентификаторы электронной почты, которые заканчиваются на «gmail.com».

 ВЫБЕРИТЕ *
ОТ клиентов
ГДЕ customer_email НРАВИТСЯ '%@gmail.com'; 

Запрос выдаст следующий результат.

customer_id first_name last_name customer_email customer_comment
1 Alicia Keys [email protected] I want a 15% скидка на следующую покупку
2 Инди Росси [email protected] Когда следующая большая распродажа?
6 Лорен Кроу [email protected] Где новые обновления продукта?
7 Стивен Fleming [email protected] Комментарии. идентификаторы электронной почты, в которых есть «co. ».

 ВЫБЕРИТЕ *
ОТ клиентов
ГДЕ customer_email НРАВИТСЯ '%co.%'; 

Запрос выдаст следующий результат.

customer_id first_name last_name customer_email customer_comment
4 Pete Williams [email protected] @help, служба поддержки
5 Кейси Кугельман [email protected] @help, перезвоните мне

2) SQL Server

LIKE – _ (подчеркивание) примеры подстановочных знаков

Давайте посмотрим, как мы можем использовать символ _ в различные позиции в шаблоне для соответствия одному символу с использованием таблицы клиентов.

Приведенный ниже запрос является примером использования _ для вывода имен клиентов, в которых вторым символом является «а».

 ВЫБЕРИТЕ *
ОТ клиентов
ГДЕ first_name LIKE '_a%'; 

Приведенный выше запрос будет генерировать следующий вывод.

6.SERLENTER 9036.EMER 9036.SER

3).

Давайте посмотрим, как мы можем использовать символ [] в разных позициях в шаблоне, чтобы сопоставить символ из списка или диапазона, используя таблицу клиентов.

a) Пример списка символов

Приведенный ниже запрос представляет собой пример, в котором используется [] для перечисления имен клиентов, начинающихся с «a», «c» или «l», как указано в списке символов в квадратных скобках.

 ВЫБЕРИТЕ *
ОТ клиентов
ГДЕ first_name LIKE '[acl]%'; 

Приведенный выше запрос будет генерировать следующий вывод.

customer_id first_name last_name customer_email customer_comment
3 Jack Smith [email protected] Есть ли распродажа на следующей неделе? Какая % скидка?
5 Кейси Кугельман [email protected] @help, пожалуйста, перезвоните мне
6 Lauren Crow [email protected]
9 Где новые обновления продукта?
8 Vanessa May [email protected]. СЕРВИЯ 902.SERLEN.SERLENTER 9036.SER 9036.ESTER 9036.EMER 9036.ESTER 9036. ESTER 9036.ESTER 9036.ESTER 9036.ESTER 9036.EMERSE
customer_id first_name last_name customer_email customer_comment
1 Alicia Keys [email protected] I want a 15% discount on the next purchase
5 Casey Kugelman ckugel1999 @yahoo. co.in @help, перезвоните мне
6 Лорен Кроу [email protected] Где новые обновления продукта?
b) Пример диапазона символов

Приведенный ниже запрос представляет собой пример, в котором используется [] для вывода имен клиентов, начинающихся с любого символа из указанного диапазона от a до l (который включает 12 символов алфавита).

 ВЫБЕРИТЕ *
ОТ клиентов
ГДЕ first_name LIKE '[a-l]%'; 

Приведенный выше запрос будет генерировать следующий вывод.

customer_id first_name last_name customer_email customer_comment
1 Alicia Keys [email protected] I want a 15% dicounnt on the next purchase
2 Инди Росси indi4u@gmail. com Когда следующая большая распродажа?
3 Джек Смит [email protected] 9аккл]%’;

Приведенный выше запрос будет генерировать следующий вывод.

customer_id first_name last_name customer_email customer_comment
2 Indi Rossi [email protected] When is следующая большая распродажа?
3 Джек Смит [email protected] Есть ли распродажа на следующей неделе? Какая % скидка?
4 Pete Williams [email protected] @help, customer service
7 Stephen Fleming fire_stephen_01@gmail. com no comments.
8 Ванесса Май [email protected] Вам нужно перезвонить и вернуть 15% 9а-л]%’;

Приведенный выше запрос будет генерировать следующий вывод.

customer_id first_name last_name customer_email customer_comment
4 Pete Williams [email protected] @help, служба поддержки
7 Стивен Флеминг [email protected] no comments..
8 Vanessa May [email protected] Need a call back and 10% refund

5) SQL Server

НРАВИТСЯ –! Пример escape-символа

Давайте посмотрим, как мы можем использовать ! управляющий символ для обработки подстановочных знаков как обычных обычных символов при поиске по шаблону, чтобы набор результатов возвращал строки с ними. 9, [ а также ].

 ВЫБЕРИТЕ *
ОТ клиентов
ГДЕ customer_comment НРАВИТСЯ ('%15!%%') ESCAPE '!'; 

Приведенный выше запрос будет генерировать следующий вывод.

customer_id first_name last_name customer_email customer_comment
1 Alicia Keys [email protected] I want скидка 15% на следующую покупку
8 Vanessa May [email protected] Need a call back and 15% refund

6) SQL Server

LIKE – NOT LIKE example

Let us see how мы можем использовать NOT LIKE для отрицательного сопоставления с шаблоном, чтобы набор результатов не содержал совпадающий шаблон.

Приведенный ниже запрос является примером использования оператора NOT LIKE для возврата строк из таблицы клиентов, где идентификатор электронной почты клиента не является идентификатором Gmail.

 ВЫБОР *
ОТ клиентов
ГДЕ customer_email НЕ НРАВИТСЯ '%gmail.com'; 

Приведенный выше запрос будет генерировать следующий вывод.

customer_id first_name last_name customer_email customer_comment
3 Jack Smith [email protected] Есть ли распродажа на следующей неделе? Какая % скидка?
4 Pete Williams [email protected] @help, customer service
5 Casey Kugelman [email protected] @ help, please call me back
8 Vanessa May [email protected] Need a call back and 15% refund

7)  SQL Server

LIKE – Пример запроса UPDATE

Давайте рассмотрим один пример того, как мы можем использовать LIKE в запросе на обновление для изменения записей, которые соответствуют (или не соответствуют, если мы используем NOT LIKE) шаблону, указанному с помощью LIKE.

Приведенный ниже запрос является примером удаления комментариев клиентов, имеющих идентификаторы электронной почты Yahoo.

 ОБНОВЛЕНИЕ клиентов
УСТАНОВИТЬ клиент_комментарий = NULL
ГДЕ customer_email как '%yahoo%'; 

Мы можем проверить обновление, запустив ниже запрос SELECT, который отобразит обновление.

 ВЫБОР *
ОТ клиентов
ГДЕ customer_email как '%yahoo%'; 
customer_id first_name last_name customer_email customer_comment
4 Pete Williams [email protected] NULL
5 Кейси Кугельман [email protected] NULL

8) SQL Server

LIKE — пример запроса DELETE

Давайте рассмотрим один пример того, как мы можем использовать LIKE в запросе DELETE для удаления совпадающих записей (или не соответствует, если мы используем NOT LIKE) шаблон, указанный с помощью LIKE.

Приведенный ниже запрос является примером удаления записей о клиентах из таблицы клиентов, у которых есть идентификаторы электронной почты Yahoo.

 УДАЛИТЬ
ОТ клиентов
ГДЕ customer_email как '%yahoo%'; 

Мы можем проверить обновление, выполнив приведенный ниже запрос SELECT, который показывает только 6 записей после удаления 2.

 SELECT * FROM customers; 
customer_id first_name last_name customer_email customer_comment
1 Alicia Keys [email protected] I want скидка 15% на следующую покупку
2 Инди Росси [email protected] Когда следующая большая распродажа?
3 Джек Смит js2-k@hotmail.
Оставить комментарий

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

© 2019 Штирлиц Сеть печатных салонов в Перми

Цифровая печать, цветное и черно-белое копирование документов, сканирование документов, ризография в Перми.