|
Программирование >> Построение запросов sql
SELECT AccountCD FROM NachislSumma WHERE NachislSum NOT BETWEEN 60 AND 250;. 3.2.2.3. Проверка на соответствие шаблону Проверка на соответствие шаблону, которая осуществляется с помощью ключевого слова LIKE, позволяет определить, соответствует ли значение данных некоторому шаблону. Синтаксис использования этого условия поиска следующий: <значение> [NOT] LIKE шаблон [ESCAPE символ пропуска\ Шаблон представляет собой строку, в которую могут входить один или более подстановочных знаков. Подстановочный знак процента (%) совпадает с любой последовательностью из нуля или более символов. Подстановочный знак подчеркивания ( ) совпадает с любым отдельным символом. При этом следует помнить, что пробел рассматривается как обычный символ. В операционной системе MS DOS знаку процента соответствует символ звездочки (*), а знаку подчеркивания - знак вопроса (?). Подстановочные знаки можно помещать в любое место строки шаблона, и в одной строке может содержаться несколько подстановочных знаков. При указании шаблона следует учитывать регистр символов. Так, например, LIKE %А% и LIKE %а% задают разные условия поиска. Например, пусть необходимо выбрать из таблицы Abonent абонентов, фамилии которых начинаются с буквы С. Для условия поиска используется шаблон С% следующим образом: SELECT Fio FROM Abonent WHERE Fio LIKE C%;. Результат выполнения запроса представлен на рис. 3.10. СВИРИНА З.А. СТАРОДУБЦЕВ Е.В. Рис. 3.10. Результат выполнения запроса к таблице Abonent Например, если точно не известна фамилия исполнителя ремонтных заявок ШЛЮКОВА М.К. (ШЛЮКОВ М.К. или ШЛАКОВ М.К.), можно воспользоваться шаблоном ШЛ КОВ М.К.%, чтобы получить информацию об интересующем исполнителе с помощью следующего запроса: SELECT ExecutorCD, Fio FROM Executor WHERE Fio LIKE ШЛ КОВ М.К.%;. Результат выполнения запроса представлен на рис. 3.11.
В учебной БД для описания поля Fio используется тип VARCHAR(20), из чего следует, что пробелы в конце строки отрезаются автоматически, и поэтому в предыдущем примере можно было воспользоваться шаблоном ШЛ КОВ М.К. (без знака процента в конце). Однако в случае, если поле БД имеет тип CHAR(n), использование знака процента в конце строки шаблона необходимо для того, чтобы строки с такими полями (дополненными справа пробелами до общего количества символов n) были включены в результат выполнения запроса. При проверке строк на соответствие шаблону может оказаться, что подстановочные знаки входят в строку символов в качестве литералов. Например, нельзя проверить, содержится ли знак процента в строке, включив его в шаблон, поскольку он будет считаться подстановочным знаком. В стандарте ANSI/ISO определен способ проверки наличия в строке литералов, использующихся в качестве подстановочных знаков. Для этого применяются символы пропуска. Когда в шаблоне встречается такой символ, то символ, следующий непосредственно за ним, считается не подстановочным знаком, а литералом (т. е. происходит пропуск символа). Непосредственно за символом пропуска может следовать либо один из двух подстановочных знаков, либо сам символ пропуска, поскольку он тоже приобретает в шаблоне особое значение. Символ пропуска определяется в виде строки, состоящей из одного символа, и фразы ESCAPE. Например, чтобы найти фамилии абонентов, начинающихся со знака процента, нужно выполнить следующий запрос: SELECT Fio FROM Abonent WHERE Fio LIKE $%% ESCAPE $;. Этот запрос не имеет результатов, т. к. в таблице Abonent нет абонентов, фамилии которых начинаются с символа процента. Первый символ процента в шаблоне, следующий за символом пропуска $, считается литералом, второй считается подстановочным знаком. 3.2.2.4. Проверка на наличие последовательности символов Предикат CONTAINING проверяет, содержит ли строковая величина, указанная слева от него, последовательность символов, указанную справа. Синтаксис использования этого условия поиска следующий: <значение> [NOT] CONTAINING <значение1>, <значение> - любое строковое выражение; <значение1> - строковая константа. Поиск CONTAINING является чувствительным к регистру. Предикат CONTAINING может быть использован для алфавитно-цифрового поиска в числах и датах. Следующий пример выводит информацию обо всех неисправностях, в названиях которых встречается Неисправ: SELECT * FROM Disrepair WHERE FailureNM CONTAINING Неисправ;.
Рис. 3.12. Результат работы предиката CONTAINING NOT CONTAINING используется для отбора строк, в которых заданное значение не включает указанную строковую константу. 3.2.2.5. Проверка на совпадение с началом строки Предикат STARTING WITH проверяет, совпадают ли начальные символы строкового выражения, стоящего слева от него, с оговоренной строкой символов, указанной справа. Синтаксис использования этого условия поиска следующий: <значение> [NOT] STARTING WITH <значение1>, где <значение> - любое строковое выражение, а <значение1> - строковая константа. Следующий запрос выводит данные обо всех абонентах, фамилия которых начинается с буквы Т: SELECT * FROM Abonent WHERE Fio STARTING WITH Т;. Результат выполнения запроса представлен на рис. 3.13.
Рис. 3.13. Результат работы предиката STARTING WITH Следует отметить, что предикат STARTING WITH является чувствительным к регистру. 3.2.2.6. Проверка на членство в множестве Еще одним распространенным условием поиска является проверка на членство в множестве, которое реализуется с помощью ключевого слова IN. Синтаксис использования этого условия поиска следующий: <значение> [NOT] IN ( <значение1> [ , <значение2> ] ) . В этом случае проверяется, соответствует ли значение данных какому-либо значению из заданного списка. Например, чтобы вывести неисправности с кодами, равными 1, 5 и 12, можно воспользоваться условием поиска с проверкой на членство в множестве (1, 5, 12). Таким образом, соответствующий запрос к таблице Disrepair будет выглядеть следующим образом: SELECT * FROM Disrepair WHERE FailureCD IN (1,5,12);.
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |