|
Программирование >> Руководство по sql
вой книгой), миллионом или несколькими сотнями долларов. И пока сумма расходов не определена, она будет выражаться значением NULL. Что произойдет, если операция сравнения будет применена к нулевому значению? Так как нуль (NULL) представляет неизвестное значение, его нельзя сравнить с любым другим значением, даже с другим нулевым значением. Например, в результаты запроса, который ищет все идентификаторы книг с расходами ниже $5000, не будет включена книга МС3026, The Psychology of Computer Cooking. SQL: select title id, advance from titles where advance < $5000 Результат: title id advance lS7 7 77 ~4000 PS3333 2000 MC2222 0 TC4203 4000 PS2091 2275 Эта книга не будет найдена и при поиске книг с расходами выше $5000: SQL: select title id, advance from titles where advance > $5000 Результат: title id advance PC8888 8000 TC7777 8000 PC1035 7000 BU2075 10125 PS2106 6000 MC3021 15000 TC3218 7000 PS1372 7000 Значение NULL не меньше, не больше и не равно $5000, потому что является неизвестным. Однако не расстраивайтесь! С помощью специального условия из таблицы всегда можно извлечь строки с нулевыми значениями: WHERE имя столбца IS [NOT] NULL Чтобы найти все книги с нулевыми затратами, можно использовать следующий запрос: SQL: select title id, advance from titles where advance is null Результат: title id advance MC3026 NULL PC9999 NULL Это условие можно использовать совместно с другими операторами. Например, в результате выполнения следующего запроса находятся все книги, расходы на которые были либо нулевыми (NULL), либо составили меньше $5000: SQL: select title id, advance from titles where advance < $5000 or advance is null Результат: title id advance PS7777 4000 PS3333 2000 MC2222 0 TC4203 4000 MC3026 NULL PS2091 2275 PC9999 NULL Поиск no подстрокам: предложение LIKE Некоторые задачи нельзя решить только с помощью операторов сравнения. Вот несколько примеров. Его фамилия начинается с Мс или Мае, а дальше я не помню . Мне нужен список телефонов, начинающихся с 415 . Я забыл название книги, но помню, что в ее описании упоминалось слово exercise . Я не помню, как точно пишется его фамилия - Carson или Karsen . Его имя Dirk или Dick. Четыре буквы, начинается с Dn заканчивается на к . В каждом из этих случаев известен некоторый образец, где-то встречающийся в столбце, и с его помощью нужно извлечь всю или часть соответствующей ему строки. Для решения этой задачи и предназначено ключевое слово LIKE. Его можно применять к символьным полям, а в некоторых системах и к полям даты. Однако ключевое слово LIKE не работает с числовыми полями (целыми, денежными, десятичными и плавающими). Его синтаксис имеет следующий вид: WHERE имя столбца [NOT] LIKE образец [ESCAPE ключевой симвоп] Образец должен заключаться в кавычки и может содержать один или несколько шаблонов (wildcards) - символов, замещающих в образце пропущенные буквы или строки. Ключевое слово ESCAPE используется в том случае, если в образце содержится один из шаблонов, но его нужно рассматривать как простой литерал. ANSI SQL предусматривает использование двух символов шаблона совместно с ключевым словом LIKE - знак процента (%) и подчеркивание ( ). Шаблон Значение % Любая строка с любым количеством символов Любой одиночный символ в разных системах могут использоваться разные символы шаблонов, так что обратитесь к документации по своей системе. Теперь вернемся к сформулированным выше задачам и приведем соответст-вуюшие запросы. Сначала осуществим поиск по шотландским фамилиям: SQL: select au lname, city from authors where au lname like Mc% or au lname like Mac% Результат: au lname city MacFeather Oakland McBadden Vacaville В соответствии с образцами, приведенными после ключевого слова LIKE, система найдет все фамилии, начинаюшиеся с Мс и Мае. Обратите внимание на то, что шаблон находится внутри кавычек. С помошью следующего запроса можно получить список всех телефонов, начинающихся с 415: SQL: select au lname, phone from authors where phone like 415% Результат:
Как и в предыдущем случае, нам известно несколько начальных символов, за которыми следует неизвестная строка. Найти книгу по слову в ее описании несколько сложнее. Неизвестно, где в описании находится слово exercise - в начале или в конце, кроме того, неизвестно, с какой буквы оно начинается - строчной или прописной. Все эти возможности можно предусмотреть, использовав шаблоны в начале и в конце образца. SQL: select title id, notes from titles where notes like %xercise%
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |