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>