Использование метасимволов для фильтрации, использование логического оператора LIKE

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

Например, может возникнуть необходимость провести поиск по строковому значению, в котором содержится подстрока ‘DDD’.Этого нельзя сделать при помощи простых операций сравнения, здесь на помощь приходит поиск с использованием метасимволов. При помощи метасимволов можно создавать условия поиска данных. В этом примере, для того чтобы найти все продукты, в названии которых содержатся слова ‘DDD’, необходимо составить шаблон поиска, позволяющий найти текст ‘DDD’в любом месте названия продукта.

Метасимволы сами по себе являются символами, которые имеют в условии WHERE специальное значение. В SQL поддерживаются метасимволы нескольких типов. Чтобы применять метасимволы в условиях поиска, необходимо использовать ключевое слово LIKE. Оно сообщает СУБД, что следующий шаблон для поиска необходимо сравнивать с использованием метасимволов, а не искать точные совпадения.

Поиск с использованием метасимволов может осуществляться только в текстовых полях (строках), нельзя использовать метасимволы при поиске полей с нетекстовым типом данных.

 

Метасимвол "знак процента" (%)

Наиболее часто используемый метасимвол — знак процента (%). В строке поиска % означает найти все вхождения любого символа.

 

SELECT [Name],[FullName],[Offsetbook],[idGroupNumber],[Yeartraining]

,[Citizenship],[Datebirth],[Completedtraining],[Reasoncomplete]

,[Datecomplete] FROM [Students02].[dbo].[Student]

WHERE FullName LIKE '%Антон Петрович'

 

Т.е. тут мы ищем любого студента, которого зовут Антон Петрович, вне зависимости от фамилии.

 

Пример18 (результат выполнения запроса):

Есть два таких студента.

 

SELECT [Name],[FullName],[Offsetbook],[idGroupNumber],[Yeartraining]

,[Citizenship],[Datebirth],[Completedtraining],[Reasoncomplete]

,[Datecomplete] FROM [Students02].[dbo].[Student]

WHERE FullName LIKE '%Антон%'

 

Так мы ищем любого студента, зовут Антон, вне зависимости от фамилии и отчества.

 

Пример19 (результат выполнения запроса):

Есть четыре таких студента (Антона).

И еще в результат попала Мария Владимировна и Виктор Викторович.

Тут надо учитывать, что условие '%Антон%' будет искать любое вхождение набора символов ‘Антон’ в текстовом поле FullName. А фамилия у Марии Владимировны – Антон ова. Так что это не ошибка.

С Антон овым Виктором Викторовичем – то же самое.

 

Если же мы исправим условие нашего запроса с '%Антон%' на '% Антон %'

 

SELECT [Name],[FullName],[Offsetbook],[idGroupNumber],[Yeartraining]

,[Citizenship],[Datebirth],[Completedtraining],[Reasoncomplete]

,[Datecomplete] FROM [Students02].[dbo].[Student]

WHERE FullName LIKE '% Антон %'

 

Пример20 (результат выполнения запроса):

 

 


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: