# Obsługa wartości NULL

Jeśli w rezultacie zapytania w bazie danych lub połączenia między tabelami nie można wygenerować danych dla określonego pola, wynikiem jest z reguły wartość NULL.



## Przegląd

Następujące wartości są w logice aplikacji Qlik Sense traktowane jako prawdziwe wartości NULL:

* wartości NULL zwrócone z połączenia ODBC;

* wartości NULL utworzone w wyniku wymuszonej konkatenacji tabel w skrypcie ładowania danych;

* wartości NULL utworzone w wyniku sprzężenia wykonanego w skrypcie ładowania danych;

* wartości NULL utworzone w wyniku wygenerowania kombinacji wartości pól na potrzeby wyświetlania w oknie tabeli.

InformacjaZasadniczo nie można używać tych wartości NULL na potrzeby asocjacji i selekcji — wyjątkiem jest zastosowanie instrukcji NullAsValue.

Więcej informacji o NullAsValue zawiera temat [NullAsValue](https://help.qlik.com/pl-PL/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/ScriptRegularStatements/NullAsValue.htm).

Pliki tekstowe z definicji nie mogą zawierać wartości NULL.

## Powiązanie/wybieranie wartości NULL z ODBC

Możliwe jest powiązywanie i wybieranie wartości NULL ze źródła danych ODBC. Zdefiniowano w tym celu zmienną skryptową. Można użyć następującej składni:

[](https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/null-value-handling.htm)SET NULLDISPLAY=&lt;sym&gt;;

Symbol &lt;sym&gt; zastąpi wszystkie wartości NULL ze źródła danych ODBC na najniższym poziomie wprowadzania danych. &lt;sym&gt; może być dowolnym ciągiem.

W celu przywrócenia domyślnej interpretacji tej funkcji należy użyć następującej składni:

SET NULLDISPLAY=;

InformacjaUżycie zmiennej NULLDISPLAY wpływa jedynie na dane ze źródła danych ODBC.

Jeśli logika aplikacji Qlik Sense ma interpretować wartości NULL zwracane z połączenia ODBC jako pusty ciąg znaków, umieść w skrypcie następującą instrukcję przed pierwszą instrukcją SELECT:

SET NULLDISPLAY=";

InformacjaW tym przypadku '' to nie cudzysłów, a dwa apostrofy bez żadnych znaków rozdzielających.

Więcej informacji o NullDisplay zawiera temat [NullDisplay](https://help.qlik.com/pl-PL/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/ValueHandlingVariables/NullDisplay.htm).

## Tworzenie wartości NULL z plików tekstowych

Można zdefiniować symbol, którego wystąpienie w pliku tekstowym lub klauzuli inline będzie interpretowane jako rzeczywista wartość NULL. Użyj następującej instrukcji:

[](https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/null-value-handling.htm)SET NULLINTERPRET=&lt;sym&gt;;

Symbol &lt;sym&gt; będzie interpretowany jako NULL. &lt;sym&gt; może być dowolnym ciągiem.

W celu przywrócenia domyślnej interpretacji tej funkcji użyj:

SET NULLINTERPRET=;

Informacja Użycie zmiennej NULLINTERPRET wpływa jedynie na dane z plików tekstowych i klauzul wbudowanych.

Więcej informacji o NullInterpret zawiera temat [NullInterpret](https://help.qlik.com/pl-PL/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/ValueHandlingVariables/NullInterpret.htm).

## 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łady

| Wyrażenie | Wynik |
| --- | --- |
| asin(2) | zwraca wartość NULL |
| log(-5) | zwraca wartość NULL |
| round(A,0) | zwraca wartość 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łady

| Wyrażenie | Wynik |
| --- | --- |
| sin(NULL) | zwraca wartość NULL |
| chr(NULL) | zwraca wartość NULL |
| if(NULL, A, B) | zwraca wartość B |
| if(True, NULL, A) | zwraca wartość NULL |
| if(True, A, NULL) | zwraca wartość A |

Wyjątkiem od tej drugiej reguły są funkcje logiczne sprawdzające typ.

Przykłady

| Wyrażenie | Wynik |
| --- | --- |
| isnull(NULL) | zwraca wartość True (-1) |
| isnum(NULL) | zwraca wartość 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łady

| Wyrażenie | Wynik |
| --- | --- |
| A + NULL | zwraca wartość NULL |
| A - NULL | zwraca wartość NULL |
| A / NULL | zwraca wartość NULL |
| A \* NULL | zwraca wartość NULL |
| NULL / A | zwraca wartość NULL |
| 0% NULL | zwraca wartość NULL |
| 0% NULL | zwraca wartość NULL |
| A i NULL | zwraca A |

### Operatory relacyjne

Obsługa wartości NULL po dowolnej stronie operatorów relacyjnych podlega specjalnym zasadom.

Przykłady

| Wyrażenie | Wynik |
| --- | --- |
| NULL (dowolny operator relacyjny) NULL | zwraca wartość NULL |
| A &lt;&gt; NULL | zwraca wartość True (-1) |
| A &lt; NULL | zwraca wartość False (0) |
| A &lt;= NULL | zwraca wartość False (0) |
| A = NULL | zwraca wartość False (0) |
| A &gt;= NULL | zwraca wartość False (0) |
| A &gt; NULL | zwraca wartość False (0) |