logo

Funcția SQL Server ISNULL

Este o funcție încorporată în SQL Server. Acesta permite utilizatorului înlocuiți valorile NULL cu o valoare de înlocuire dată. Acest articol oferă o prezentare completă a funcției ISNULL pentru a returna o valoare alternativă dacă expresia sau înregistrările tabelului au valori NULL.

Sintaxă

Următoarea este o sintaxă care ilustrează funcția ISNULL:

 ISNULL ( Expression, Replacement ) 

După cum putem vedea că această sintaxă acceptă doar două argumente:

    Expresie: este folosit pentru a verifica NULL. Poate fi de orice tip.Înlocuire: Este valoarea care va fi returnată atunci când expresia este NULL. Trebuie să fie implicit convertibil într-o valoare de tip expresie.

Dacă expresia este evaluată la NULL, această funcție înlocuiește valoarea NULL cu valoarea de înlocuire. Când argumentul este tipurile de date sunt diferite , serverul SQL transformă implicit tipul de date cu valoare de înlocuire în tipul de date expresie înainte de a returna o valoare. Vom obține valoarea expresiei atunci când expresia nu este NULL.

Funcția ISNULL poate funcționa în SQL Server (începând cu 2008), Parallel Data Warehouse, Azure SQL Database și Azure SQL Data Warehouse.

Exemplu de funcție ISNULL

Să explorăm funcția ISNULL cu câteva exemple în SQL Server.

1. Funcția ISNULL cu valoarea numerică

Exemplul de mai jos folosește funcția ISNULL. Aici primul argument este NULL; prin urmare, returnează valoarea unui al doilea argument într-un rezultat:

 SELECT ISNULL(NULL, 25) AS Result; 

După execuție, vom obține rezultatul de mai jos:

Funcția SQL Server ISNULL

2. Funcția ISNULL cu date șir de caractere

Exemplul de mai jos folosește funcția ISNULL. Aici vom obține valoarea șirului 'Buna ziua' pentru că este primul argument. Începând cu definiția funcției ISNULL(), returnează prima valoare a argumentului când NU este NULL:

 SELECT ISNULL('Hello', 'Javatpoint') AS Result; 

După execuție, vom obține rezultatul de mai jos:

Funcția SQL Server ISNULL

3. Funcția ISNULL cu variabile

Exemplul de mai jos folosește funcția ISNULL și returnează rezultatul folosind o variabilă:

 DECLARE @expres VARCHAR(45); DECLARE @value VARCHAR(25); SET @expres = NULL; SET @value = 'Javatpoint'; SELECT ISNULL(@expres, @value) AS Result; 

După execuție, vom obține rezultatul de mai jos:

Funcția SQL Server ISNULL

4. Funcția ISNULL pe tabel

Aici vom vedea cum putem înlocui o valoare de coloană cu o valoare semnificativă atunci când conține valori nule. Mai întâi să creăm un tabel numit „ Angajat' folosind declarația de mai jos:

 CREATE TABLE Employee (ID INT IDENTITY PRIMARY KEY, Emp_Name VARCHAR(50) NOT NULL, Age INT NULL, Salary INT NULL ); 

Acum, vom insera câteva valori în acest tabel folosind declarația de mai jos:

 INSERT INTO Employee (Emp_Name, Age, Salary) VALUES ('Kevin Huges', 28, 45000), ('Rose Bennet', NULL, 36000), ('Peter Butler', 25, NULL); 

Când verificăm tabelul, putem vedea asta angajații 2 și 3 au un NULL valoare.

Funcția SQL Server ISNULL

Să presupunem că vrem să înlocuim valorile NULL ale acestor coloane fără a le actualiza permanent în tabel. În acest caz, putem folosi funcția ISNULL pentru a înlocui valorile NULL cu valoarea specifică.

De exemplu , vrem să returnăm vârstă și salariu al angajatului cu 22 și, respectiv, 25000, dacă coloanele lor au valori NULL în tabelul Employee. Putem face acest lucru folosind următoarea declarație:

 SELECT ID, Emp_Name, ISNULL(Age, 22) AS Age, ISNULL(Salary, 25000) AS Salary FROM Employee; 

După execuție, vom obține rezultatul de mai jos:

Funcția SQL Server ISNULL

Dacă rulăm interogarea cu funcția ISNULL pentru coloana în care nicio coloană nu are valori NULL în tabel, această interogare va returna valorile reale ale rândurilor.

De exemplu , am actualizat salariu a angajatului al cărui ID=2 după cum urmează:

 UPDATE Employee SET Salary = 65000 WHERE ID=2; 

Din nou, dacă executăm funcția ISNULL, aceasta nu schimbă coloana de salariu. Vedeți rezultatul de mai jos:

Funcția SQL Server ISNULL

5. ISNULL cu funcții de agregare

SQL Server ne permite, de asemenea, să folosim funcțiile agregate, cum ar fi SUM, AVG cu funcția ISNULL. Să presupunem că ar putea fi nevoie să obținem suma unui salariu coloana prezentă în tabelul Angajați, iar dacă vreo coloană de salariu are NULL, aceasta va fi înlocuită cu 25000 înainte de a adăuga salariile.

Înainte de a efectua metodele agregate, vom actualiza salariul angajatului cu NULL al cărui id este 2, folosind interogarea de mai jos.

 UPDATE Employee SET Salary = NULL WHERE ID=2; 

Exemplul de mai jos înlocuiește mai întâi valoarea NULL cu 25000 și apoi a efectuat funcția SUM pe aceasta. Vedeți rezultatul de mai jos:

 SELECT SUM(ISNULL(Salary, 25000)) AS Sum_of_Salaries FROM Employee; 

După execuție, vom obține rezultatul de mai jos:

Funcția SQL Server ISNULL

În mod similar, funcția ISNULL poate fi utilizată pentru a înlocui valorile NULL și apoi a returna valoarea medie cu Funcția AVG(). . Vezi declarația de mai jos:

 SELECT AVG(ISNULL(Salary, 25000)) AS Avg_of_Salaries FROM Employee; 

După execuție, vom obține rezultatul de mai jos:

Funcția SQL Server ISNULL

Diferența dintre SQL Server ISNULL și IS NULL

Funcțiile ISNULL și IS NULL sunt ambele diferite în SQL Server. Folosim funcția ISNULL atunci când avem nevoie înlocuiți valorile NULL cu o valoare specificată. Pe de altă parte, folosim funcția IS NULL când vrem identifica valorile NULL într-o masă.

Să vedem exemplul de mai jos pentru a ilustra diferențele dintre ele .

Să presupunem că vrem să obținem datele angajaților din „ Angajat' tabel care conține valori NULL în coloana Salariu. Pentru a obține acest tip de informații, ar trebui să folosim funcția IS NULL în UNDE clauza după cum urmează:

 SELECT * FROM Employee WHERE Salary IS NULL; 

Va returna detaliul angajatului al cărui salariu este NULL:

Funcția SQL Server ISNULL

Acum, dacă încercăm să obținem acest tip de informații cu funcția ISNULL, SQL Server prin următoarele eroare :

convertiți data în șir
 SELECT * FROM Employee WHERE Salary ISNULL(NULL, 0; 

Iată eroarea:

Funcția SQL Server ISNULL

Astfel, este clar că SQL Server nu ne permite să folosim ISNULL pentru a găsi valori NULL.