Kategoria: SQL Dodane przez marcin90

Analiza kodu - zadanie 1

Jaki będzie rezultat poniższego zapytania?
SELECT CASE
		WHEN NULL = NULL THEN 'True'
		ELSE 'False'
	   END AS Result

Uzasadnij swoją odpowiedź i zaproponuj zapytanie, które dla powyższego warunku zachowa się prawidłowo.

1 odpowiedź

1 0 Dodane 10-06-2018 przez marcin90
Rezultatem zapytania będzie False. W języku SQL null = null zawsze zwróci 'unknown'. Związane jest to z logiką trójwartościową w języku SQL - true, false, oraz unknown.

Nie możemy określić efektu porównania wartości 0 z wartością pustą (niezdefiniowaną, nieokreśloną), nie określimy także efektu porównania wartości pustej z wartością pustą!

Gdy chcemy sprawdzić czy wartość równa się null, powinniśmy użyć klauzuli IS NULL.
Powyższe zapytanie powinno wyglądać następująco:
SELECT CASE
		WHEN NULL IS NULL THEN 'True'
		ELSE 'False'
	   END AS Result

Rezultat działania: True


Dodaj swoją wersję odpowiedzi

Dodajesz odpowiedź jako gość. Zaloguj się się by uzyskać dostęp do rankingu oraz powiadomień.