В этой статье пойдет разговор о подстановочных символах в структурированном языке запросов 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:

Подстановочные знаки в SQL
List of wildcards

Также, глядя на вышеуказанные списки, стоит учесть, что все эти элементы можно применять в разнообразных комбинациях.

Однако давайте лучше перейдем к практике: займемся составлением простейших запросов и посмотрим, как Like выполняет возвращение (returning) искомых данных.

Работа Like на примерах MS SQL Server

Для демонстрации работы оператора Like воспользуемся таблицей Customer со следующим содержимым:

Подстановочные знаки в SQL

Составим инструкцию, которая вернет (returned) из таблицы клиентов (from customers) всех покупателей, имена которых начинаются с буквы «а»:

SELECT * FROM Customer
WHERE FirstName LIKE 'a%';

После сравнения и выборки данных клиентов останется всего двое, что соответствует действительности:

Подстановочные знаки в SQL

Теперь давайте выполним выборку покупателей, в именах которых содержатся буквы «ci». Местонахождение этих букв в слове в нашем случае значения не имеет — главное, чтобы они были:

Подстановочные знаки в SQL

Мы видим, что оператор Like возвращает (returns) 2 имени. Важно понимать, что не имеет значения, где именно эти символы, ведь % может означать и ноль, то есть указанные символы могут быть и в начале слова, и в середине, и в конце. Чтобы продемонстрировать это, выполним ту же команду, но уже для телефонов. Поместив в шаблон «2», мы увидим, что возвращаются (return) все номера, где встречается цифра 2, причем вне зависимости от места расположения этой двойки:

Подстановочные знаки в SQL

Теперь поработаем со знаком нижнего подчеркивания. Он означает один и только один любой символ. С его помощью сделаем выборку стран, названия которых заканчиваются на «exico»:

Подстановочные знаки в SQL

Также учтите, что регистр в составляемом шаблоне значения не имеет, то есть Like сравнивает и возвращает (return) значения без учета регистра:

Подстановочные знаки в SQL

Теперь немного изменим запрос и задействуем два символа подчеркивания:

Подстановочные знаки в SQL

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

Дальше — интереснее. Можно выбрать из таблицы все страны, которые начинаются на «S», «F» и «G». Тут пригодятся квадратные скобки и % — то есть мы используем  уже комбинацию:

Подстановочные знаки в SQL

Как видите, все очень даже просто. В следующем предложении выберем уже диапазон значений из нужного столбца, воспользовавшись комбинацией трех подстановочных элементов:

Подстановочные знаки в SQL

То есть мы вывели все страны, названия которых начинаются с букв A, B или C.

Теперь давайте вспомним, что в программировании существует равно (==) и не равно (!=). По схожей аналогии работает и [charlist]. Если в начале квадратных скобок мы поместим восклицательный знак, произойдет выборка всех данных, которые не отвечают поставленному условию (not). Синтаксис следующий:

Подстановочные знаки в SQL

Благодаря этому запросу мы получим все города, названия которых НЕ начинаются с букв A, B или C. Но если вернуться к таблицам начала статьи, становится понятно, что это работает лишь для БД MS Access.

По материалам: https://schoolsw3.com/sql/sql_wildcards.php.

Подстановочные знаки в SQL