Різниця між (IS NULL) та (= NULL) в SQL запиті

pic

У мене виникло питання по SQL щодо того;

У чому різниця між наведеними 4 кодами?

1. SELECT NAME FROM CUSTOMER WHERE refereeid != 2 OR refereeid IS NULL;

2. SELECT NAME FROM CUSTOMER WHERE refereeid != 2 OR refereeid = NULL;

3. SELECT NAME FROM CUSTOMER WHERE refereeid != 2 AND refereeid = NULL;

4. SELECT NAME FROM CUSTOMER WHERE refereeid != 2 AND refereeid IS NULL;

pic

Ось відповідь

Кожен з цих запитів намагається фільтрувати записи з таблиці CUSTOMER на основі стовпця referee_id. Однак поведінка цих запитів різна через те, як SQL обробляє NULL значення.

ЗАПИТ 1

SELECT NAME FROM CUSTOMER
WHERE
refereeid != 2 OR refereeid IS NULL;

Пояснення

  • Цей запит вибирає імена клієнтів, де:
  • referee_id не дорівнює 2 (referee_id != 2) АБО
  • referee_id є NULL (referee_id IS NULL).
  • Оскільки NULL означає невідоме значення, його не можна порівнювати за допомогою !=. Замість цього слід використовувати IS NULL.
  • Правильний та дійсний запит: Це поверне клієнтів, у яких:
  • referee_id не дорівнює 2.
  • Має значення NULL у referee_id.

Перекладено з: Difference between (IS NULL) and (= NULL) in SQL query

Leave a Reply

Your email address will not be published. Required fields are marked *