Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
LECTIONS_BDBZ.doc
Скачиваний:
20
Добавлен:
16.12.2018
Размер:
1.63 Mб
Скачать

Перевірка на рівність значенню null (is null)

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

Інколи буває потрібно явно перевіряти значення стовпчика на рівність NULL і безпосередньо опрацювати такі значення.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

NULL – означає невідоме або не визначене значення.

Не можна явно записувати у клітинку NULL′ - це літерна величина.

Щоб клітинка отримала значення NULL при заповненні таблиці – треба її залишити порожньою.

В Delphi є метод Clear – очищає поле, робить відповідну клітинку таблиці – порожньою (<=> заносить в неї значення NULL)

Приклад

Table 1

Field A

Field B

……



потрібно очистити це поле

Table 1 Field B . Clear ;

ім’я об’єкта – поля

Але використання метода Clear об’єктів - полів - не відповідає технологіям принципам побудови клієнт-серверних програм – бо цей спосіб очистки поля розрахований на локальні набори даних.

В стандарті SQL є оператор UPDATE, за допомогою якого можна очистити поле – будемо розглядати пізніше.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

Для безпосереднього опрацювання NULL – значень в SQL є перевірка IS NULL:

Вивести всі дані про відпуски товарів зі складу, для яких не вказаний покупець:

SELECT *

FROM Vidpusk

WHERE Pokupets IS NULL

Обернена форма перевірки на NULL (IS NOT NULL) дозволяє вибрати рядки, які не містять значення NULL:

Вивести всі дані про відпуски товарів зі складу, для яких вказаний покупець:

SELECT *

FROM Vidpusk

WHERE Pokupets IS NOT NULL

На відміну від всіх інших перевірок, перевірка на NULL не може повертати NULL в якості результату. Вона завжди повертає TRUE або FALSE.

Може здаватися дивним, що не можна перевірити значення на рівність NULL за допомогою порівняння, наприклад:

(неправильно!)

SELECT *

FROM Vidpusk

WHERE Pokupets = NULL

Ключове слово NULL тут не можна використовувати, бо насправді – це не справжнє значення, - це – просто сигнал, що значення – невідоме. Навіть якби порівняння

Pokupets = NULL

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

Коли СУБД виявить рядок, в якому поле Pokupets містить значення NULL, виконалася би наступна перевірка:

NULL = NULL

Що буде в результаті: TRUE чи FALSE?

Оскільки значення по обидві сторони від знаку = - невідомі, то згідно правил виконання порівнянь – повинні отримати NULL.

Оскільки умова відбору має значення, яке не співпадає із TRUE – то цей рядок вилучається із результуючої таблиці – результат – прямо протилежний тому, якого ми прагнули!

Тому, в силу правил логіки SQL та правил опрацювання значень NULL, в таких випадках необхідно виконувати перевірку IS NULL.

Перевірки літерних значень.

Перевірка, чи літерний рядок починається з певного значення (STARTING WITH)

Щоб перевірити, чи значення літерного стовпчика починалось з певної підстрічки. Для такої перевірки потрібно використовувати:

Отримати список товарів, які починаються із літери “С”.

SELECT *

FROM Tovary

WHERE Tovar STARTING WITH “С”

Перевірка, чи літерний рядок містить певне значення (CONTAINING)

Щоб перевірити, чи значення літерного стовпчика містить певний підрядок символів (не має значення, з якої саме позиції) – треба використовувати

Отримати список покупців, чия адреса містить підрядок “Стр”:

SELECT *

FROM Pokupci

WHERE Adresa CONTAINING “Стр”

Перевірка на відповідність шаблону (LIKE)

Це – більш загальний спосіб, який дозволяє замінити і

STARTING WITH

і

CONTAINING

Перевірка на відповідність шаблону дозволяє встановити, чи відповідає значення даних шаблону.

Шаблон – це літерний рядок, в який може входити один або більше підстановочних символів.

Ці символи трактуються особливим чином.

Підстановочні символи

  1. Підстановочний символ % (процент) означає послідовність, що складається із нуля або більшої кількості будь-яких символів.

Вивести всю інформацію про товари, назви яких починаються із літери “М”, а закінчуються літерою “О”.

SELECT *

FROM Tovary

WHERE Nazva LIKE “М%О”

Nazva

......

Масло

......

Молоко

.......

2). Підстановочний символ _ (підкреслення) означає рівно один і лише один будь-який символ.

Вивести всю інформацію про товари, назви яких починаються із літери “М”, закінчуються літерою “О” і складаються рівно із 5-ти символів.

SELECT *

FROM Tovary

WHERE Nazva LIKE “М_ _ _ О”

Nazva

......

Масло

......

Підстановочні символи можна записувати в будь-якому місці шаблону; в одному шаблоні може використовуватися кілька підстановочних символів.

Наступний запит допускає назву компанії як “Smithson”, так і “Smithsen”, а також будь-яке закінчення назви компанії: “Co”, “Corp”, “Inc.” тощо:

SELECT Company

FROM Clienty

WHERE Company LIKE Smтiths_n %”

За допомогою перевірки NOT LIKE можна вибирати рядки, які не задовольняють шаблону.

Перевірку LIKE (так само, як і STARTING WITH та CONTAINING) можна застосовувати лише до стовпчиків, які мають літерний тип даних. Якщо стовпчик містить значення NULL, то результатом перевірок LIKE, STARTING WITH, CONTAINING – буде NULL.

Щоб подібне є в операційній системах MS DOS, UNIX: в шаблоні можна вказувати групу імен файлів:

* ( % - аналог) -  кількість  символів

? ( _ - аналог) - 1  символ

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]