|
Программирование >> Sql: полное руководство
- проверяемое выражение Х- IN- ( -NOT-J константа Рис 6 9 Синтаксическая диаграмма проверки на членства в множестве (оператор XN) С помощью проверки not in можно убедиться в том, что элемент данных не является членом заданного множества. Проверяемое выражение в операторе in может быть любым допустимым выражением, однако обычно оно представляет собой короткое имя столбца, как в предыдущих примерах. Если результатом проверяемого выражения является значение null, то проверка in также возвращает null Все элементы в списке заданных значений должны иметь один и тот же тип данных, который должен быть сравним с типом данных проверяемого выражения. Как и проверка between, проверка in не добавляет в возможности SQL ничего нового, поскольку условие X IN (А, В, С) полностью эквивалентно условию (X = А) OR (X = В) OR (X = С) Однако проверка in предлагает гораздо более эффективный способ выражения условия отбора, особенно если множество содержит больщое число элементов. В стандарте ANS1/1S0 не определено максимальное количество элементов множества, и в большинстве СУБД не задан явно верхний предел. По соображениям переносимости лучше избегать множеств, содержащих один элемент, наподобие такого: CITY IN (Mew York) Их следует заменять следующим простым сравнением: CITY = New York Проверка на соответствие шаблону (оператор LIKE) Для выборки строк, в которых содержимое некоторого текстового столбца совпадает с заданным текстом, можно использовать простое сравнение. Например, следующий запрос извлекает строку из таблицы customers по имени: Показать лимит кредита для Smithson Corp. SELECT COMPANY, CREDIT LIMIT FROM CUSTOMERS WHERE COMPANY = Smithson Corp. Однако очень легко можно забыть, какое именно название носит интересующая нас компания: Smith , Smithson или Smithsonian . Проверка на соответствие шаблону позволяет выбрать из базы данных строки на основе частичного соответствия имени клиента Поверка на соответствие шаблону (оператор like), схематически изображенная на рис. 6.10, позволяет определить, соответствует ли значение данных в столбце некоторому шаблону. Шаблон представляет собой строку, в которую может входить один или более подстановочных знаков. Эти знаки интерпретируются особым образом. имя столбца -NOT-J LIKE шаблон - ESCAPE символ пропуска Рис 6 10 Оннтакстеская диаграмма проверки на соответствие шаблону (оператор LIKE) Подстановочные знаки Подстановочный знак % совпадает с любой последовательностью из нуля или более символов. Ниже приведена измененная версия предыдущего запроса, в которой используется щаблон, содержащий знак процента: SELECT COMPANY, CREDIT LIMIT FROM CUSTOMERS WHERE COMPANY LIKE Smith% Corp. Оператор like указывает СУБД, что необходимо сравнивать содержимое столбца name с шаблоном Smith% Corp. . Этому шаблону соответствуют все перечисленные имена. Smith Corp. Smithson Corp. Smithsen Corp. Smithsonian Corp. A вот следующие имена данному шаблону не соответствуют: SmithCorp Smithson Inc. Подстановочный знак (символ подчеркивания) совпадает с любым отдельным символом. Например, если вы уверены, что название компании - либо Smithson , либо Smithsen , то можете воспользоваться следующим запросом: SELECT COMPANY, CREDIT LIMIT FROM CUSTOMERS WHERE COMPANY LIKE Smithsen Corp. В таком случае любое из этих имен будет соответствовать шаблону Smithson Corp. Smithsen Corp. Smithsun Corp. a ни одно из этих не будет ему соответствовать: Smithsoon Corp. Smithsn Corp. Подстановочные знаки можно помещать в любое место строки шаблона, и в одной строке может содержаться несколько подстановочных знаков. Следующий запрос допускает как написание Smithson и Smithsen , так и любое другое окончание названия компании, включая Corp. , Inc. или какое-то другое: SELECT COMPANY, CREDIT LIMIT TROM CUSTOMERS WHERE COMPANY LIKE Smiths n % С помощью формы not like можно находить строки, которые не соответствуют Шаблону. Проверку like можно применять только к столбцам, имеющим строковый ип данных. Если в столбце содержится значение null, то результатом проверки like ОУДет null Вероятно, вы уже встречались с проверкой на соответствие шаблону в операционных системах, имеющих интерфейс командной строки (Unix, MS-DOS). В этих системах звездочка (*) используется для тех же целей, что и символ процента (%) в SQL, а вопросительный знак (?) соответствует символу подчеркивания ( ) в SQL, но в целом возможности работы с шаблонами строк в них такие же Символы пропуска * При проверке строк на соответствие шаблону может оказаться, что подстановочные знаки входят в строку символов в качестве литералов. Например, нельзя проверить, содержится ли знак процента в строке, просто включив его в шаблон, поскольку СУБД будет считать этот знак подстановочным. Как правило, это не вызывает серьезных проблем, поскольку подстановочные знаки довольно редко встречаются в именах, названиях товаров и других текстовых данных, которые обычно хранятся в базе данных. В стандарте ANSI/ISO определен способ проверки наличия в строке литералов, использующихся в качестве подстановочных знаков. Для этого применяются символы пропуска. Когда в шаблоне встречается такой символ, то символ, следующий непосредственно за ним, считается не подстановочным знаком, а литералом (Происходит пропуск символа ) Непосредственно за символом пропуска может следовать либо один из двух подстановочных знаков, либо сам символ пропуска, поскольку он тоже приобретает в шаблоне особое значение. Символ пропуска определяется в виде строки, состоящей из одного символа, и предложения escape (рис 6.10) Ниже приведен пример использования знака доллара ($) в качестве символа пропуска: Найти товары, коды которых начинаются с четырех букв А%ВС. SELECT ORDER NUM, PRODUCT FROM ORDERS WHERE PRODUCT LIKE A$%BC% ESCAPE $ Первый символ процента в шаблоне, следующий за символом пропуска, считается литералом, второй - подстановочным знаком Символы пропуска часто используются при проверке на соответствие шаблону, именно поэтому они были включены в стандарт ANSI/ISO Однако они не входили в первые реализации SQL и поэтому не очень распространены. Для обеспечения переносимости приложений следует избегать использования предложения escape Проверка на равенство значению NULL (оператор IS NULL) Значения null обеспечивают возможность применения трехзначной логики в условиях отбора. Для любой заданной строки результат применения условия отбора может быть true, false или null (в случае, когда в одном из столбцов содержится значение null) Иногда бывает необходимо явно проверять значения столбцов на равенство null и непосредственно обрабатывать их. Для этого в SQL имеется специальная проверка is null, синтаксическая диаграмма которой изображена на рис. 6.11.
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |