Propagacja wartości NULL w wyrażeniach
Wartości NULL są propagowane w wyrażeniach według kilku reguł logicznych zgodnych z intuicją.
Funkcje
Ogólna zasada jest taka, że funkcje zwracają wartość NULL, jeśli ich parametry wykraczają poza zakres zdefiniowanych wartości działania funkcji.
Przykład:
- asin(2) zwraca NULL
- log(-5) zwraca NULL
- round(A,0) zwraca NULL
Z powyższej reguły wynika, że funkcje zazwyczaj zwracają wartość NULL, jeśli dowolny z parametrów niezbędnych do obliczenia wartości jest równy NULL.
Przykład:
- sin(NULL) zwraca NULL
- chr(NULL) zwraca NULL
- if(NULL, A, B) zwraca B
- if(True, NULL, A) zwraca NULL
- if(True, A, NULL) zwraca A
Wyjątkiem od tej drugiej reguły są funkcje logiczne sprawdzające typ.
Przykład:
- isnull(NULL) zwraca True (-1)
- isnum(NULL) zwraca False (0)
Operatory arytmetyczne i działające na ciągach znaków
Jeśli po dowolnej stronie tych operatorów napotykana jest wartość NULL, zwracana jest wartość NULL.
Przykład:
- A + NULL zwraca NULL
- A - NULL zwraca NULL
- A / NULL zwraca NULL
- A * NULL zwraca NULL
- NULL / A zwraca NULL
- 0 / NULL zwraca NULL
- 0 * NULL zwraca NULL
- A & NULL zwraca A
Operatory relacyjne
Obsługa wartości NULL po dowolnej stronie operatorów relacyjnych podlega specjalnym zasadom.
Przykład:
- NULL rel.op NULL zwraca NULL
- A <> NULL zwraca True (-1)
- A < NULL zwraca False (0)
- A <= NULL zwraca False (0)
- A = NULL zwraca False (0)
- A >= zwraca False (0)
- A > NULL zwraca False (0)