FROM Vidpusk
WHERE Pokupets IS NOT NULL
FROM Vidpusk
WHERE Pokupets IS NULL
FROM Vidpusk
Обернена форма перевірки на NULL (IS NOT NULL) дозволяє вибрати рядки, які не містять значення NULL:
Вивести всі дані про відпуски товарів зі складу, для яких вказаний покупець:
SELECT *
На відміну від всіх інших перевірок, перевірка на NULL не може повертати NULL в якості результату. Вона завжди повертає TRUE або FALSE.
Може здаватися дивним, що не можна перевірити значення на рівність NULL за допомогою порівняння, наприклад:
(неправильно!)
SELECT *
WHERE Pokupets = NULL
Ключове слово NULL тут не можна використовувати, бо насправді – це не справжнє значення, - це – просто сигнал, що значення – невідоме. Навіть якби порівняння
Pokupets = NULL
було можливим, правила опрацювання значень NULL в порівняннях привели би до того, щоб результат був би зовсім не такий, як очікується:
Коли СУБД виявить рядок, в якому поле Pokupets містить значення NULL, виконалася би наступна перевірка:
NULL = NULL
Що буде в результаті: TRUE чи FALSE?
Оскільки значення по обидві сторони від знаку = - невідомі, то згідно правил виконання порівнянь – повинні отримати NULL.
Оскільки умова відбору має значення, яке не співпадає із TRUE – то цей рядок вилучається із результуючої таблиці – результат – прямо протилежний тому, якого ми прагнули!
Тому, в силу правил логіки SQL та правил опрацювання значень NULL, в таких випадках необхідно виконувати перевірку IS NULL.
Перевірки літерних значень.
Перевірка, чи літерний рядок починається з певного значення(STARTING WITH)
Щоб перевірити, чи значення літерного стовпчика починалось з певної підстрічки. Для такої перевірки потрібно використовувати:
Отримати список товарів, які починаються із літери “С”.
SELECT *