Что означает знак в sql
SQL-Урок 5. Символы подстановки и регулярные выражения (LIKE)
Часто, для фильтрации данных, нам нужно будет осуществить выборку не по точному совпадении условия, а по приближенному значению. То есть когда, например, мы ищем товар, название которого соответствует определенному шаблону или содержит определенные символы или слова. Для таких целей в SQL существует оператор LIKE, который ищет приближенные значения. Для конструирования такого шаблона используются метасимволы (специальные символы для поиска части значения), а именно: «знак процента» (%) или звездочка (*), «символ подчеркивания» (_) или «знак вопроса» (?), «квадратные скобки» ([ ]).
1. Метасимвол знак процента (%) или звездочка (*)
Давайте из нашей таблицы, например, отберем записи, относящиеся только к товарам, содержащих в своем названии слово Skis (лыжи). Для этого составим соответствующий шаблон:
SELECT * FROM Sumproduct WHERE Product LIKE ‘*Skis*’
Как видим, СУБД отобрала только те записи, где в колонке Product были товары, содержащие слово Skis. Также отметим, что в данном примере используется метасимвол «звездочка» (*), поскольку СУБД Access не поддерживает «знак процента» (% ) для оператора LIKE.
2. Метасимвол знак подчеркивания (_) или знак (?)
Знак подчеркивания или вопросительный знак применяется для того, чтобы заменить один символ в слове. Давайте в слове Bikes заменим все гласные буквы на «вопросительный знак» (?) и посмотрим на результат:
SELECT * FROM Sumproduct WHERE Product LIKE ‘B?k?s’
Мы использовали метасимвол «вопросительный знак» (?), поскольку СУБД Access не поддерживает «знак подчеркивания» (_) для оператора LIKE.
3. Метасимвол квадратные скобки ([ ])
Метасимвол «квадратные скобки» ([ ]) используется для одновременного указания набора символов, по которым нужно выполнить поиск.
SELECT * FROM Sumproduct WHERE City LIKE ‘[TN]*’
В примере выше, мы отобрали записи, где в поле City названия городов начинаются с буквы T или N. Также, в данном случае, мы можем использовать еще один метасимвол, который выполняет обратное действие. Добавим в наше регулярное выражение восклицательный знак (! ), что будет означать «не равно» (для СУБД Access) или знак степени (^) (для других СУБД).
SELECT * FROM Sumproduct WHERE City LIKE ‘[!TN]*’
То есть, последний созданный нами запрос будет читаться как: выбрать все колонки из таблицы Sumproduct и только те записи, где в поле City названия городов не начинаются на буквы T или N. Дополнительно отметим, что набор букв в метасимволе «квадратные скобки» отвечает только за одну позицию в тексте.
Мы можем получить аналогичный результат, если воспользоваться уже известным нам оператором NOT, однако с восклицательным знаком (! ) запись будет короче.
Подстановочный знак в SQL
Обзор подстановочных знаков в SQL
Подстановочный знак в SQL выполняет работу по замене в строке нуля на любое количество символов. Обычно эти символы подстановки можно найти с помощью оператора SQL LIKE. Это оператор, который обычно используется в предложении WHERE SQL для поиска определенного расположения символов.
У нас есть два общих подстановочных знака в SQL. Символ процента означает ноль, один или любое количество символов. Символ подчеркивания обозначает один символ: букву или цифру. Эти знаки могут быть объединены в несколько договоренностей. У нас также есть (charlist), (^ charlist) и (! Charlist), которые можно использовать как в SQL, так и в MS Access.
Мы подробно рассмотрим эти символы подстановки, а также несколько других полезных символов подстановки.
Wildcard | Описание | пример |
Знак процента:% | Этот шаблон соответствует нулю или более символов | Ха% находит ха, шляпа, счастливы и случаются |
Подчеркивать: _ | Этот подстановочный знак соответствует только одному определенному символу | найти горшок, яму и положить |
Квадратных скобок: () | Этот подстановочный знак соответствует сольному символу, указанному в скобках | p (oi) t найти горшок и яму, но не положить |
Caret: ^ | Этот подстановочный знак соответствует символам, которых нет в скобках после этого символа | р (^ ои) т находит положено, но не горшок и яма |
Отметим, что MS Access использует символ звездочки символа (*) для подстановочного знака вместо символа подстановки символа процента (%), чтобы найти ноль или более символов, и использует знак вопроса (?) Для подстановочного знака вместо символ подстановки для обозначения одного символа.
Синтаксис подстановочных знаков SQL
Давайте посмотрим, как можно записать символы подстановки «%» и «_»:
SELECT FROM table_name
WHERE column LIKE ‘AAAA%’
SELECT FROM table_name
WHERE column LIKE ‘%AAAA%’
SELECT FROM table_name
WHERE column LIKE ‘_AAAA’
SELECT FROM table_name
WHERE column LIKE ‘AAAA_’
SELECT FROM table_name
WHERE column LIKE ‘_ AAAA _’
AAAA% помогает нам искать любые строки, начинающиеся с AAAA и заканчивающиеся там или заканчивающиеся другим отдельным символом или более чем одним символом.
% AAAA% помогает нам искать любые строки, начинающиеся с любого количества символов, но содержащие строку AAAA между ними и заканчивающуюся любым количеством символов от 0 до бесконечности.
_AAAA помогает нам искать любые строки, начинающиеся с одного отдельного символа и заканчивающиеся строкой AAAA.
AAAA_ помогает нам искать любые строки, начинающиеся с паттерна AAAA и заканчивающиеся одним отдельным символом.
_AAAA_ помогает нам искать любые строки, начинающиеся с отдельного символа, содержащие шаблон AAAA между ними и заканчивающиеся одним отдельным символом.
Примеры для каждого подстановочного знака в SQL
Вот несколько примеров подстановочных знаков, приведенных ниже.
1) Работа с подстановочным знаком%
В этом примере мы можем выбрать всех сотрудников города, начинающихся с «the»:
SELECT * FROM Employees
WHERE City LIKE ‘the%’;
2) Работа с символом _ Wildcard
В этом примере мы можем выбрать всех сотрудников города, начиная с одного отдельного символа, но заканчивая «elhi»:
SELECT * FROM Employees
WHERE City LIKE ‘_elhi’;
Давайте посмотрим на другой пример, где мы можем выбрать сотрудников города, чье имя начинается с «B», за которым следует один отдельный символ, затем «r», за которым следует один отдельный символ, за которым следует «in»:
SELECT * FROM Employees
WHERE City LIKE ‘B_r_in’;
3) Объединение% и _ Wildcard
Мы можем комбинировать оба подстановочных знака для оптимизации нашего процесса поиска.
В этом примере мы можем найти любую строку, имеющую «а» во второй позиции.
WHERE StringName LIKE ‘_a%’
В этом примере мы можем найти любую строку, начинающуюся с ‘x’ и имеющую длину не менее трех символов.
WHERE StringName LIKE ‘x_%_%’
В этом примере мы можем найти любую строку, начинающуюся с ‘x’ и заканчивающуюся ‘y’, с минимальным одним символом между ними.
WHERE StringName LIKE ‘x%_y’
4) Работа с подстановочным знаком ()
В этом примере мы можем выбрать всех сотрудников города, чье имя начинается с «a», «b» или «c».
SELECT * FROM Employees
WHERE City LIKE ‘(abc)%’;
Мы можем написать этот же пример другим способом, используя символ дефиса (-). Это утверждение также выберет всех сотрудников города, чье имя начинается с «a», «b» или «c». Это можно записать следующим образом:
>SELECT * FROM Employees
WHERE City LIKE ‘(ac)%’;
5) Работа с (!) Подстановочным знаком
В этом примере мы можем выбрать всех сотрудников города, чье имя НЕ начинается с «a», «b» или «c».
SELECT * FROM Employees
WHERE City LIKE ‘(!abc)%’;
Это утверждение также можно записать следующим образом:
SELECT * FROM Employees
WHERE City NOT LIKE ‘(abc)%’;
Вывод
В этой статье подстановочных знаков SQL мы рассмотрели все подстановочные знаки в SQL. Кроме того, мы рассмотрели различные примеры символов подстановки SQL, чтобы дать нам больше понимания и ясности.
В заключение, подстановочные знаки выполняют ту же работу, что и регулярные выражения. Мы можем объединить несколько подстановочных знаков в одну строку, чтобы получить лучшие результаты и результаты поиска. Может быть несколько баз данных, таких как MS Access, которые могут использовать отдельный подстановочный знак SQL для аналогичной функции.
Рекомендуемые статьи
Примеры, с разными LIKE-операторами с «%» и «_» подстановочными знаками:
Выражение | Описание |
WHERE name LIKE ‘text%’ | Находит любые значения, начинающиеся с «text» |
WHERE name LIKE ‘%text’ | Находит любые значения, заканчивающиеся на «text» |
WHERE name LIKE ‘%text%’ | Находит любые значения, которые имеют «text» в любой позиции |
WHERE name LIKE ‘_text%’ | Находит любые значения, которые имеют «text» во второй позиции |
WHERE name LIKE ‘text_%_%’ | Находит любые значения, начинающиеся с «text» и длиной не менее 3 символов |
WHERE name LIKE ‘text%data’ | Находит любые значения, начинающиеся с «text» и заканчивающиеся на «data» |
Использование символа %
Следующий оператор SQL выбирает всех пользователей с name, начинающимся с «Т»:
Пример:
Следующий оператор SQL выбирает всех пользователей с именем, содержащим шаблон «То»:
Пример:
Использование подстановочного знака
Следующий оператор SQL выбирает всех пользователей с name, начиная с любого символа, за которым следует «о»:
Пример:
Следующий оператор SQL выбирает всех пользователе с name начиная с «Т», за которым следует любой символ, за которым следует «м», за которым следует любой символ, а затем «с»:
Пример:
Использование подстановочного знака [charlist]
Следующий оператор SQL выбирает всех пользователей с name, начиная с «Т», «Р» или «Е»:
Пример:
Следующий оператор SQL выбирает всех пользователей с name, начиная с «Т», «Р» или «Е»:
Пример:
Использование подстановочного знака [! Charlist]
Два следующих оператора SQL выбирают всех пользователей с помощью name NOT, начинающегося с «Т», «Р» или «E»:
Подстановочные знаки в SQL
В этой статье пойдет разговор о подстановочных символах в структурированном языке запросов SQL (structured query language). Понимание работы соответствующего оператора Like позволит вам выполнять специальные запросы и возвращать (return) искомые значения. Будут рассмотрены примеры для системы управления базами данных MS SQL Server.
Подстановочные знаки необходимы для замены любых символов в строке с последующим сравнением и выборкой нужных данных из таблицы. Они используются при составлении запроса. В декларативном языке программирования SQL для этих целей используется специальный оператор Like. В сочетании с ключевым словом WHERE, Like обеспечивает поиск заданного шаблона в необходимом столбце.
Изучив описание и список (List of wildcards) ниже, вы узнаете, какие подстановочные знаки можно использовать с оператором Like:
Выше мы рассмотрели подстановочные знаки для MS SQL Server — СУБД от Microsoft. Однако если сравнить системы SQL Server и Access, мы увидим, что схожим образом обстоит ситуация и в случае с базами данных MS Access — они тоже имеют свою систему подстановочных элементов — вот для сравнения List of wildcards для MS Access:
List of wildcards
Также, глядя на вышеуказанные списки, стоит учесть, что все эти элементы можно применять в разнообразных комбинациях.
Однако давайте лучше перейдем к практике: займемся составлением простейших запросов и посмотрим, как Like выполняет возвращение (returning) искомых данных.
Работа Like на примерах MS SQL Server
Для демонстрации работы оператора Like воспользуемся таблицей Customer со следующим содержимым:
Составим инструкцию, которая вернет (returned) из таблицы клиентов (from customers) всех покупателей, имена которых начинаются с буквы «а»:
SELECT * FROM Customer
WHERE FirstName LIKE ‘a%’;
После сравнения и выборки данных клиентов останется всего двое, что соответствует действительности:
Теперь давайте выполним выборку покупателей, в именах которых содержатся буквы «ci». Местонахождение этих букв в слове в нашем случае значения не имеет — главное, чтобы они были:
Мы видим, что оператор Like возвращает (returns) 2 имени. Важно понимать, что не имеет значения, где именно эти символы, ведь % может означать и ноль, то есть указанные символы могут быть и в начале слова, и в середине, и в конце. Чтобы продемонстрировать это, выполним ту же команду, но уже для телефонов. Поместив в шаблон «2», мы увидим, что возвращаются (return) все номера, где встречается цифра 2, причем вне зависимости от места расположения этой двойки:
Теперь поработаем со знаком нижнего подчеркивания. Он означает один и только один любой символ. С его помощью сделаем выборку стран, названия которых заканчиваются на «exico»:
Также учтите, что регистр в составляемом шаблоне значения не имеет, то есть Like сравнивает и возвращает (return) значения без учета регистра:
Теперь немного изменим запрос и задействуем два символа подчеркивания:
После сопоставления данных и отработки запроса мы получим такой же результат.
Дальше — интереснее. Можно выбрать из таблицы все страны, которые начинаются на «S», «F» и «G». Тут пригодятся квадратные скобки и % — то есть мы используем уже комбинацию:
Как видите, все очень даже просто. В следующем предложении выберем уже диапазон значений из нужного столбца, воспользовавшись комбинацией трех подстановочных элементов:
То есть мы вывели все страны, названия которых начинаются с букв A, B или C.
Теперь давайте вспомним, что в программировании существует равно (==) и не равно (!=). По схожей аналогии работает и [charlist]. Если в начале квадратных скобок мы поместим восклицательный знак, произойдет выборка всех данных, которые не отвечают поставленному условию (not). Синтаксис следующий:
Благодаря этому запросу мы получим все города, названия которых НЕ начинаются с букв A, B или C. Но если вернуться к таблицам начала статьи, становится понятно, что это работает лишь для БД MS Access.
Русские Блоги
Подстановочные знаки SQL и их использование
Использование подстановочных знаков в SQL Server
Подстановочный знак _
Знак «_» означает любой отдельный символ, и этот символ может соответствовать только одному символу. «_» Может быть размещен в любом месте условия запроса и может представлять только один символ. Китайский символ представлен только знаком «_».
Wildcards%
Подстановочный знак []
«[]» Может использоваться для запроса определенного диапазона данных в запросе шаблона. [] Используется для указания любого отдельного символа в пределах определенного диапазона, включая данные на обоих концах.
Подстановочный знак [^]
[^] Используется для запроса любого отдельного символа, который не принадлежит указанному диапазону ([a-f]) или множеству ([abcdef]).
Такие как: выберите * из alluser
where username like ‘M[^abc]%’
Указывает, что имя пользователя из таблицы alluser начинается с M, а второй символ не является a, b или c.
Сопоставление с образцом в предложении ESCAPE
Ищет строки, содержащие один или несколько специальных символов подстановки. Например, таблица скидок в базе данных клиентов может хранить значения скидок со знаком процента (%). Для поиска знака процента в виде символа вместо подстановочного знака необходимо указать ключевое слово ESCAPE и escape-символ. Например, пример базы данных содержит столбец с именем комментария с 30% текста. Чтобы найти любую строку, содержащую строку 30% в любом месте столбца комментариев, укажите предложение Where, состоящее из комментария Where LIKE ‘% 30! %%’ ESCAPE ‘!’. Если ESCAPE и escape-символы не указаны, SQL Server возвращает все строки со строкой 30.
В следующем примере показано, как найти строку «Скидка 50% при покупке 100 или более копий» в столбце примечаний таблицы заголовков в базе данных pubs:
Select notes FROM titles
Where notes LIKE ‘50%% off when 100 or more copies are purchased’
ESCAPE ‘%’
Основная цель побега
1. Используйте ключевое слово ESCAPE для определения escape-символов. В шаблоне, когда символ экранирования предшествует подстановочному знаку, подстановочный знак интерпретируется как обычный символ. Например, чтобы найти строку, содержащую строку 5%, используйте: Где ColumnA LIKE ‘% 5 / %%’ ESCAPE ‘/’
Select * FROM finances Where description LIKE ‘gs_’ ESCAPE ‘S’
# Регион «Подстановочный знак»