Valoarea NULL înseamnă că valoarea acestei coloane este necunoscută sau nevalidă. NULL nu este sinonim cu un zero numeric sau binar, un șir cu lungime zero sau un caracter gol. Valorile NULL sunt utilizate pentru a distinge înregistrările zero (pentru coloanele numerice) sau cele goale (pentru coloanele de caractere) din absența înregistrărilor (NULL atât pentru coloanele numerice, cât și pentru caracterele de caractere).
Puteți introduce o valoare NULL într-o coloană pentru care sunt permise valori NULL (așa cum se specifică în instrucțiunea CREATE TABLE) în două moduri.
SQL Server introduce automat valoarea NULL dacă nu sunt introduse date în coloană și dacă nu există o valoare implicită sau o constrângere DEFAULT pe această coloană (sau pe tipul de date).
Utilizatorul poate introduce în mod explicit valoarea NULL introducând cuvântul NULL fără ghilimele. Dacă cuvântul NULL este introdus într-o coloană de caractere, este tratată ca o combinație a literelor N, U, L și L și nu ca valoare NULL.
Când sunt primite valori NULL, aplicația afișează, de obicei, un șir de formular NULL, (NULL) sau (null) în poziția corespunzătoare. De exemplu, în coloana Coloana din tabelul Produs, valorile NULL sunt permise:
Trebuie avut grijă când se compară valorile NULL. Comportamentul mediului în această comparație depinde de valoarea parametrului SET ANSI_NULLS.
Dacă valoarea este egală cu SET ANSI_NULLS ON, o comparație cu una sau mai multe expresii egale cu NULL, nu emite rezultatul TRUE sau FALSE, și ieșirile NECUNOSCUT. Aceasta deoarece o valoare necunoscută nu poate fi comparată logic cu nici o altă valoare. Acest lucru are loc în două cazuri: fie atunci când expresia este comparată cu o NULL literal, sau atunci când se compară două expresii, dintre care una este egal cu NULL. De exemplu, rezultatul comparației următor este întotdeauna atunci când ANSI_NULLS valoarea NECUNOSCUT parametrului setat în ON:
Următoarea comparație oferă, de asemenea, rezultatul UNKNOWN de fiecare dată când variabila conține o valoare NULL:
Transact-SQL acceptă o extensie care permite operatorilor de comparare să returneze TRUE sau FALSE în comparație cu valorile NULL. Această funcție este activată când este setată opțiunea ANSI_NULLS OFF. Dacă valoarea ANSI_NULLS este OFF, comparațiile de tip ColumnA = NULL returnează TRUE dacă coloana ColumnA conține NULL și FALSE dacă coloana ColumnA conține o valoare diferită de NULL. În plus, compararea a două expresii care duc la o valoare NULL va reveni la TRUE. Setarea ANSI_NULLS nu afectează coloanele atașate care conțin valori NULL. Rândurile din coloanele asociate care conțin valori NULL nu fac parte din setul de rezultate. Dacă valoarea ANSI_NULLS este OFF, următoarea instrucțiune SELECT returnează toate rândurile din tabelul Client. în care coloana Regiune conține valoarea NULL:
Indiferent de valoarea parametrului ANSI_NULLS, valorile NULL sunt întotdeauna considerate egale pentru cuvintele ORDER BY, GROUP BY și DISTINCT. În plus, un indice unic sau constrângere UNIQUE, pentru care este permisă o valoare NULL, poate conține doar un rând cu o valoare cheie NULL. Liniile ulterioare cu o valoare NULL sunt respinse. Pentru o cheie primară, niciuna dintre coloanele care fac parte din cheie nu poate fi NULL.
Rezultatul calculelor în care este implicată valoarea NULL este valoarea NULL, deoarece dacă cel puțin unul dintre factori este necunoscut, rezultatul trebuie să fie, de asemenea, necunoscut (UNKNOWN). De exemplu, rezultatul coloanei expresie1 + 1 este NULL dacă valoarea coloanei 1 este NULL.
Când căutați coloane, inclusiv coloane cu valori NULL, puteți găsi valori NULL în baza de date sau diferite de acestea utilizând următorul șablon: