HTML Diff
0 added 0 removed
Original 2026-01-01
Modified 2026-03-10
1 <p>В этой статье пойдет разговор о подстановочных символах в структурированном языке запросов<strong>SQL</strong>(structured query language). Понимание работы соответствующего оператора<strong>Like</strong>позволит вам выполнять специальные запросы и возвращать (return) искомые значения. Будут рассмотрены примеры для системы управления базами данных<strong>MS SQL Server</strong>.</p>
1 <p>В этой статье пойдет разговор о подстановочных символах в структурированном языке запросов<strong>SQL</strong>(structured query language). Понимание работы соответствующего оператора<strong>Like</strong>позволит вам выполнять специальные запросы и возвращать (return) искомые значения. Будут рассмотрены примеры для системы управления базами данных<strong>MS SQL Server</strong>.</p>
2 <p><strong>Подстановочные знаки</strong>необходимы для замены любых символов в строке с последующим сравнением и выборкой нужных данных из таблицы. Они используются при составлении запроса. В декларативном языке программирования SQL для этих целей используется специальный<strong>оператор Like</strong>. В сочетании с ключевым словом WHERE, Like обеспечивает поиск заданного шаблона в необходимом столбце.</p>
2 <p><strong>Подстановочные знаки</strong>необходимы для замены любых символов в строке с последующим сравнением и выборкой нужных данных из таблицы. Они используются при составлении запроса. В декларативном языке программирования SQL для этих целей используется специальный<strong>оператор Like</strong>. В сочетании с ключевым словом WHERE, Like обеспечивает поиск заданного шаблона в необходимом столбце.</p>
3 <p>Изучив описание и список (List of wildcards) ниже, вы узнаете, какие подстановочные знаки можно использовать с оператором<strong>Like</strong>:</p>
3 <p>Изучив описание и список (List of wildcards) ниже, вы узнаете, какие подстановочные знаки можно использовать с оператором<strong>Like</strong>:</p>
4 <ul><li>"%" - может замещать собой любые значения (ноль и больше);</li>
4 <ul><li>"%" - может замещать собой любые значения (ноль и больше);</li>
5 <li>"_" - нижнее подчеркивание означает лишь один символ;</li>
5 <li>"_" - нижнее подчеркивание означает лишь один символ;</li>
6 <li>"[]" - здесь следует любой отдельный символ;</li>
6 <li>"[]" - здесь следует любой отдельный символ;</li>
7 <li>"^" - тоже любой символ, но не заключенный в скобки;</li>
7 <li>"^" - тоже любой символ, но не заключенный в скобки;</li>
8 <li>"-" - через дефис можно прописать целый набор символов, некий интересующий диапазон.</li>
8 <li>"-" - через дефис можно прописать целый набор символов, некий интересующий диапазон.</li>
9 </ul><p>Выше мы рассмотрели подстановочные знаки для<strong>MS SQL Server</strong>- СУБД от Microsoft. Однако если сравнить системы SQL Server и Access, мы увидим, что схожим образом обстоит ситуация и в случае с базами данных<strong>MS Access</strong> - они тоже имеют свою систему подстановочных элементов - вот для сравнения List of wildcards для<strong>MS Access</strong>:</p>
9 </ul><p>Выше мы рассмотрели подстановочные знаки для<strong>MS SQL Server</strong>- СУБД от Microsoft. Однако если сравнить системы SQL Server и Access, мы увидим, что схожим образом обстоит ситуация и в случае с базами данных<strong>MS Access</strong> - они тоже имеют свою систему подстановочных элементов - вот для сравнения List of wildcards для<strong>MS Access</strong>:</p>
10 List of wildcards<p>Также, глядя на вышеуказанные списки, стоит учесть, что все эти элементы можно применять в разнообразных<strong>комбинациях</strong>.</p>
10 List of wildcards<p>Также, глядя на вышеуказанные списки, стоит учесть, что все эти элементы можно применять в разнообразных<strong>комбинациях</strong>.</p>
11 <p>Однако давайте лучше перейдем к практике: займемся составлением простейших запросов и посмотрим, как Like выполняет возвращение (returning) искомых данных.</p>
11 <p>Однако давайте лучше перейдем к практике: займемся составлением простейших запросов и посмотрим, как Like выполняет возвращение (returning) искомых данных.</p>
12 <h2>Работа Like на примерах MS SQL Server</h2>
12 <h2>Работа Like на примерах MS SQL Server</h2>
13 <p>Для демонстрации работы оператора Like воспользуемся таблицей Customer со следующим содержимым:</p>
13 <p>Для демонстрации работы оператора Like воспользуемся таблицей Customer со следующим содержимым:</p>
14 <p>Составим инструкцию, которая вернет (returned) из таблицы клиентов (from customers) всех покупателей, имена которых начинаются с буквы "а":</p>
14 <p>Составим инструкцию, которая вернет (returned) из таблицы клиентов (from customers) всех покупателей, имена которых начинаются с буквы "а":</p>
15 <p>SELECT * FROM CustomerWHERE FirstName LIKE 'a%';</p>
15 <p>SELECT * FROM CustomerWHERE FirstName LIKE 'a%';</p>
16 <p>После сравнения и выборки данных клиентов останется всего двое, что соответствует действительности:</p>
16 <p>После сравнения и выборки данных клиентов останется всего двое, что соответствует действительности:</p>
17 <p>Теперь давайте выполним выборку покупателей, в именах которых содержатся буквы "ci". Местонахождение этих букв в слове в нашем случае значения не имеет - главное, чтобы они были:</p>
17 <p>Теперь давайте выполним выборку покупателей, в именах которых содержатся буквы "ci". Местонахождение этих букв в слове в нашем случае значения не имеет - главное, чтобы они были:</p>
18 <p>Мы видим, что оператор Like возвращает (returns) 2 имени. Важно понимать, что не имеет значения, где именно эти символы, ведь % может означать и ноль, то есть указанные символы могут быть и в начале слова, и в середине, и в конце. Чтобы продемонстрировать это, выполним ту же команду, но уже для телефонов. Поместив в шаблон "2", мы увидим, что возвращаются (return) все номера, где встречается цифра 2, причем вне зависимости от места расположения этой двойки:</p>
18 <p>Мы видим, что оператор Like возвращает (returns) 2 имени. Важно понимать, что не имеет значения, где именно эти символы, ведь % может означать и ноль, то есть указанные символы могут быть и в начале слова, и в середине, и в конце. Чтобы продемонстрировать это, выполним ту же команду, но уже для телефонов. Поместив в шаблон "2", мы увидим, что возвращаются (return) все номера, где встречается цифра 2, причем вне зависимости от места расположения этой двойки:</p>
19 <p>Теперь поработаем со знаком нижнего подчеркивания. Он означает один и только один любой символ. С его помощью сделаем выборку стран, названия которых заканчиваются на "exico":</p>
19 <p>Теперь поработаем со знаком нижнего подчеркивания. Он означает один и только один любой символ. С его помощью сделаем выборку стран, названия которых заканчиваются на "exico":</p>
20 <p>Также учтите, что регистр в составляемом шаблоне значения не имеет, то есть Like сравнивает и возвращает (return) значения без учета регистра:</p>
20 <p>Также учтите, что регистр в составляемом шаблоне значения не имеет, то есть Like сравнивает и возвращает (return) значения без учета регистра:</p>
21 <p>Теперь немного изменим запрос и задействуем два символа подчеркивания:</p>
21 <p>Теперь немного изменим запрос и задействуем два символа подчеркивания:</p>
22 <p>После сопоставления данных и отработки запроса мы получим такой же результат.</p>
22 <p>После сопоставления данных и отработки запроса мы получим такой же результат.</p>
23 <p>Дальше - интереснее. Можно выбрать из таблицы все страны, которые начинаются на "S", "F" и "G". Тут пригодятся квадратные скобки и % - то есть мы используем уже<strong>комбинацию</strong>:</p>
23 <p>Дальше - интереснее. Можно выбрать из таблицы все страны, которые начинаются на "S", "F" и "G". Тут пригодятся квадратные скобки и % - то есть мы используем уже<strong>комбинацию</strong>:</p>
24 <p>Как видите, все очень даже просто. В следующем предложении выберем уже<strong>диапазон</strong>значений из нужного столбца, воспользовавшись комбинацией трех подстановочных элементов:</p>
24 <p>Как видите, все очень даже просто. В следующем предложении выберем уже<strong>диапазон</strong>значений из нужного столбца, воспользовавшись комбинацией трех подстановочных элементов:</p>
25 <p>То есть мы вывели все страны, названия которых начинаются с букв A, B или C.</p>
25 <p>То есть мы вывели все страны, названия которых начинаются с букв A, B или C.</p>
26 <p>Теперь давайте вспомним, что в программировании существует равно (==) и не равно (!=). По схожей аналогии работает и [charlist]. Если в начале квадратных скобок мы поместим восклицательный знак, произойдет выборка всех данных, которые не отвечают поставленному условию (not). Синтаксис следующий:</p>
26 <p>Теперь давайте вспомним, что в программировании существует равно (==) и не равно (!=). По схожей аналогии работает и [charlist]. Если в начале квадратных скобок мы поместим восклицательный знак, произойдет выборка всех данных, которые не отвечают поставленному условию (not). Синтаксис следующий:</p>
27 <p>Благодаря этому запросу мы получим все города, названия которых НЕ начинаются с букв A, B или C. Но если вернуться к таблицам начала статьи, становится понятно, что это работает лишь для БД MS Access.</p>
27 <p>Благодаря этому запросу мы получим все города, названия которых НЕ начинаются с букв A, B или C. Но если вернуться к таблицам начала статьи, становится понятно, что это работает лишь для БД MS Access.</p>
28 <p><em>По материалам: https://schoolsw3.com/sql/sql_wildcards.php.</em></p>
28 <p><em>По материалам: https://schoolsw3.com/sql/sql_wildcards.php.</em></p>
29 <a></a>
29 <a></a>