Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Значення NULL




Значення NULL в SQL – це невідоме значення, яке не слід плутати з порожнім. Порожнє значення – це відсутність даних, у випадку ж значення NULL ми не знаємо, яке значення повинне бути записане в даному полі. Значення NULL трактуються в SQL особливим чином, і ми продемонструємо це простим прикладом порівняння значень NULL з порожніми в SQL Server.

Подивимося, чи можна встановити рівність двох порожніх значень і проробимо те ж саме зі значеннями NULL:

Таким чином, порожні значення рівні один одному, значення NULL – не рівні, що інтуїтивно зрозуміло, тому що це невідомі значення, а два невідомих значення не повинні обов’язково бути рівні один одному. Цю властивість значень NULL потрібно завжди пам’ятати при складанні SQL-операторів. NULL – особливі значення й тому вимагають особливого ставлення. В умові WHERE передбачений спеціальний критерій для значень NULL – IS NULL. Спробуємо застосувати його.

СПРОБУЙТЕ – Застосування значень NULL

Спробуємо скласти список клієнтів, які не мають факсу.

1 Поле Факс, що зберігає дані про номер факсу клієнта. Отже, якщо у клієнта нема факсу, в таблиці Клиенты бази даних значення цього поля буде мати значення NULL. Саме цією обставиною ми й скористаємося, указавши як критерій наявність значення NULL у поле Факс.

2 Уведемо наступний SQL-оператор:

SELECT Название

FROM Клиенты

WHERE Факс IS NULL;

3 Результат буде наступним:

 


Як це працює

Для перевірки значень NULL застосовується ключове слово IS. Як ми показали вище, значення NULL не можна рівняти до чого б то не було, у тому числі й до іншого значення NULL. Із цим значенням не можна проводити ні обчислень, ні порівнянь. Єдино можлива дія над цим значенням – перевірка, чи дійсно воно є таким, і ця операція задається ключовим словом IS.

Як уже була сказано, IS NULL – операція особливого виду, застосовувана для перевірки значень NULL. Операція рівності (=) замість цього значення незастосовна:

3.2 Обчислення в умові WHERE

Критерії пошуку в умові WHERE можуть мати обчислення над полями таблиць.

Приміром, нам може знадобитися список товарів на складі, загальна вартість яких перевищує 140 000 російських рублів:

SELECT Марка, НаСкладе * Цена AS Стоимость

FROM Товары

WHERE НаСкладе * Цена > 140000;

У результаті одержимо всього кілька записів:

SQL Server містить ряд процедур обчислень над датами – наприклад, для визначення числа днів між двома датами. Ми докладно розглянемо їх у далі, що ж стосується розглянутих тут загальних принципів, то вони застосовні до поля будь-якого типу.

Застосування умови WHERE забезпечує ряд нових можливостей. Одна з найцінніших особливостей SQL – здатність виконувати обчислення не тільки в порядковому режимі, але в будь-якому місці таблиці. Наприклад, умовою WHERE можна скористатися для фільтрації по всіх замовленнях або по середньому замовленню (після виконання обчислень по всій таблиці для визначення цього самого середнього замовлення). Ми поговоримо про обчислення докладніше в наступних темах.

СПРОБУЙТЕ – Фільтрація за розрахованими значеннями

Припустимо, нам потрібен був список замовлень, в яких сума замовленого товару перевищує 100 000 російських рублів.

1 Інформація про замовлені товари зберігається в таблиці Заказано.

2 Очевидно, вартість замовлення того чи іншого товару дорівнює добутку значень, записаних у полях Количество і Цена.

3 Тепер можна скласти запит, у якому критерієм умови буде перевищення добутку значень двох полів. Складемо й уведемо наступний запит:

SELECT КодЗаказа, Цена * Количество

FROM Заказано

WHERE Цена * Количество > 100000

4 Як бачимо, обчислюваний стовпець у результаті не має імені:


5 Привласнимо стовпцю ім’я [Сума товару], скориставшись ключовим словом AS і отримали результат:

i Зверніть увагу на наявність пробілу в імені поля, внаслідок чого його потрібно вписувати в квадратні дужки.

Як це працює

У процесі виконання цього запиту, по кожному рядку виконується обчислення повної вартості замовленого товару. Якщо результат обчислення перевищує 100 000, рядок додається в результат, інакше – відкидається.

Зверніть увагу, що обчислення виконуються по кожному рядку даних. Слід дотримуватися обережності із застосуванням подібних складних обчислень, що істотно сповільнюють обробку великих наборів даних. Якщо такі обчислення доводиться проводити над даними, які міняються рідко (приміром, дані про покупки), можна подумати над створенням таблиці для зберігання обчислених значень.

Common Errors

У запитах цього типу виникає, власне кажучи, тільки одна помилка – повернення невірного результату. Причина, як правило – у логічній помилці або помилці обчислень. Перевірте ще раз логікові оператори, щоб переконатися в правильній фільтрації.

Помилка Повідомлення або причина
Неправильний результат Як правило, наслідок помилки в логіці. Перевірте ще раз правильність операторів і формул.



Поделиться с друзьями:


Дата добавления: 2014-12-07; Просмотров: 532; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.01 сек.