Funzioni COALESCE e ISNULL in SQL Server

SQL Server ha introdotto diversi modi per gestire i valori NULL. Le funzioni più utilizzate per gestire NULL sono COALESCE e ISNULL in SQL Server. Queste funzioni vengono utilizzate per trovare valori non NULL da un elenco di argomenti. In questo post vedremo gli usi delle funzioni ISNULL e COALESCE e le loro differenze con gli esempi.

Funzione COALESCE in SQL Server

1. La funzione COALESCE nel server SQL viene utilizzata per restituire il primo valore Non NULL dall'elenco di colonne / argomenti indicato nell'ordine.

2. COALESCE è considerato simile alla scrittura di un'espressione dell'istruzione CASE in SQL.

3. COALESCE è una funzione standard SQL ANSI. È disponibile con tutti i principali RDBMS tra cui Oracle, MySQL.

4. Sintassi - COALESCE (espressione [, ... n])

Funzione ISNULL in SQL Server

1. ISNULL è una funzione introdotta specialmente in T-SQL per sostituire un valore NULL con un valore di sostituzione specificato.

2. Sintassi - ISNULL (check_expression, replacement_value)

La differenza tra ISNULL e COALESCE

1. ISNULL è una funzione. Quindi, viene valutato solo una volta. COALESCE è un'espressione simile a una dichiarazione di un caso. Sarebbe valutato più volte.

2. La funzione ISNULL è specifica di Microsoft ed è stata introdotta in SQL Server. COALESCE è una funzione standard ANSI che viene utilizzata da tutti i principali RDBMS (ad es. Oracle, MySQL).

3. Il tipo di dati di restituzione per una funzione ISNULL utilizza il tipo di dati del primo argomento o secondo argomento se il primo argomento è NULL. Se entrambi gli argomenti sono NULL, restituirà un tipo di dati INTEGER. COALESCE, seguendo le regole dell'istruzione case, utilizza il più alto dell'elemento principale di precedenza per restituire il tipo di dati. COALESCE restituisce un errore se tutti i parametri di input sono NULL.

4. ISNULL richiede solo due parametri. COALESCE prende un numero variabile di parametri.

Esempi di funzioni COALESCE e ISNULL

Creeremo una tabella dei dipendenti con Id dipendente, nome, secondo nome, cognome, numero di contatto e colonne salariale.

Ad eccezione della colonna Employee (Id), ogni altra colonna è considerata NULLable.

IF OBJECT_ID ('Employee') NON è un dipendente NULL DROP TABLE; CREATE TABLE Employee (ID INT NOT NULL IDENTITY (1,1) PRIMARY KEY, FirstName VARCHAR (50) NULL, MiddleName VARCHAR (50) NULL, LastName VARCHAR (50) NULL, ContactNo VARCHAR (10) NULL, Salary INT NULL);

Inserire alcuni record nella tabella dei dipendenti

Inserisci in valori Employee ('Vishwanath', NULL, NULL, '9999955555', 12000); Inserisci in valori Employee (NULL, 'Niraj', NULL, '9911223344', 14000); Inserisci nei valori Employee (NULL, NULL, 'Chetan', NULL, NULL); Inserisci in valori Employee ('Atul', 'K', NULL, '9876780987', NULL); Inserisci nei valori Impiegato ('Vishal', 'M', 'P', NULL, 12000); 

1. Utilizzo di ISNULL - Visualizza 'Non dato' se ContactNo è NULL nella tabella dei dipendenti

I seguenti esempi recuperano le colonne ID e ContactNo dalla tabella dei dipendenti. Se la colonna ContactNo è NULL, ContactNo viene visualizzato nel set di risultati come "Non specificato", utilizzando la funzione ISNULL per verificare i valori NULL nella colonna ContactNo.

ID SELECT, ISNULL (ContactNo, 'Not Given') FROM Employee; 
Output - ID set di risultati ContactNo 1 9999955555 2 9911223344 3 Not Given 4 9876780987 5 Not Given 

2. Utilizzo di ISNULL - Impostazione dello stipendio su 0, se non viene fornito alcun salario

I seguenti esempi recuperano la colonna ID e stipendio annuale (salario mensile * 12). Se Salary è NULL, sostituirlo con 0. Utilizzare la funzione ISNULL per verificare i valori NULL nella colonna salariale.

ID SELECT, ISNULL (Salary, 0) * 12 come ContactNo FROM Employee; 
Output - ID set di risultati ContactNo 1 144000 2 168000 3 0 4 0 5 144000 

3. Utilizzo di IS NULL: ricerca di ID dipendenti in cui il numero di contatto è NULL

L'esempio seguente utilizza IS NULL (spazio tra IS e NULL) per filtrare i record nella colonna Numero contatto. Dove il numero di contatto non viene fornito significa che hanno valori NULL.

ID SELECT, ContactNo come ContactNo FROM Employee WHERE ContactNo IS NULL; 
Output - ID set di risultati ContactNo 3 NULL 5 NULL 

4. Utilizzo di IS NOT NULL - Ricerca di ID dipendenti in cui Stipendio NON è NULL

L'esempio seguente utilizza IS NOT NULL per filtrare i record nella colonna Salary dove Salary NON è NULL o lo stipendio è presente.

ID SELECT, Stipendio come contattoNo Dipendente DOVE LO stipendio NON È NULL; 
Uscita - ID set risultato ContactNo 1 12000 2 14000 5 12000 

5. Utilizzo della funzione ISNULL con AVG - Per calcolare lo stipendio medio di tutti i dipendenti

L'esempio seguente trova lo stipendio medio di tutti i dipendenti, inclusi quelli a cui non è stata assegnata una cifra salariale (cioè valori NULL).

SELECT AVG (ISNULL (salary, 0)) FROM Employee; 
Uscita - Risultato Imposta AvgEmpSal 7600 

6. Utilizzo di COALESCE: ottieni il primo valore NOT NULL

L'esempio seguente utilizza COALESCE per restituire il primo valore Not NULL tra il nome, il secondo e il cognome.

ID SELECT, COALESCE (FirstName, MiddleName, LastName) come FirstNotNullName FROM Employee; 
Risultato: set di risultati Id FirstNotNullName 1 Vishwanath 2 Niraj 3 Chetan 4 Atul 5 Vishal 

7. Utilizzo di COALESCE: ottieni il primo valore NOT NULL dagli argomenti variabili

Nell'esempio seguente viene restituito il primo valore NOT NULL (ad es., 'Hi There').

SELECT COALESCE (NULL, NULL, 'Hi There', NULL, 'Hello There') come FirstNotNullValue; 
Output - Risultato Set FirstNotNullValue Salve 

8. Utilizzo di COALESCE: passaggio di tutti i valori NULL come argomento

Se passiamo tutti gli argomenti come NULL a una funzione COALESCE, verrà generato un errore che indica che almeno un argomento non deve essere la costante nulla.

SELEZIONARE COALESCE (NULL, NULL, NULL, NULL) come FirstNotNullValue 

Messaggio di errore
Messaggio 4127, livello 16, stato 1, riga 22
Almeno uno degli argomenti di COALESCE deve essere un'espressione che non è la costante NULL.

Maggiori informazioni sulla programmazione di database e SQL da Tech-Recipes.