logo

Funzione ISNULL di SQL Server

È una funzione incorporata in SQL Server. Permette all'utente di sostituire i valori NULL con un determinato valore di sostituzione. Questo articolo offre una panoramica completa della funzione ISNULL per restituire un valore alternativo se l'espressione o i record della tabella hanno valori NULL.

Sintassi

Quella che segue è una sintassi che illustra la funzione ISNULL:

 ISNULL ( Expression, Replacement ) 

Come possiamo vedere, questa sintassi accetta solo due argomenti:

    Espressione: Viene utilizzato per verificare la presenza di NULL. Può essere di qualsiasi tipo.Sostituzione: È il valore che verrà restituito quando l'espressione è NULL. Deve essere implicitamente convertibile in un valore del tipo espressione.

Se l'espressione restituisce NULL, questa funzione sostituisce il valore NULL con il valore sostitutivo. Quando la discussione è i tipi di dati sono diversi , il server SQL trasforma implicitamente il tipo di dati del valore di sostituzione nel tipo di dati dell'espressione prima di restituire un valore. Otterremo il valore dell'espressione quando l'espressione non è NULL.

La funzione ISNULL può funzionare in SQL Server (a partire dalla versione 2008), Parallel Data Warehouse, database SQL di Azure e Azure SQL Data Warehouse.

Esempio di funzione ISNULL

Esploriamo la funzione ISNULL con alcuni esempi in SQL Server.

1. Funzione ISNULL con il valore numerico

L'esempio seguente utilizza la funzione ISNULL. Qui il primo argomento è NULL; pertanto, restituisce il valore di un secondo argomento in un risultato:

 SELECT ISNULL(NULL, 25) AS Result; 

Dopo l'esecuzione, otterremo l'output seguente:

Funzione ISNULL di SQL Server

2. Funzione ISNULL con dati di stringhe di caratteri

L'esempio seguente utilizza la funzione ISNULL. Qui otterremo il valore della stringa 'Ciao' perché è il primo argomento. A partire dalla definizione della funzione ISNULL(), restituisce il primo valore dell'argomento quando NON è NULL:

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

Dopo l'esecuzione, otterremo l'output seguente:

Funzione ISNULL di SQL Server

3. Funzione ISNULL con variabili

L'esempio seguente utilizza la funzione ISNULL e restituisce il risultato utilizzando una variabile:

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

Dopo l'esecuzione, otterremo l'output seguente:

Funzione ISNULL di SQL Server

4. Funzione ISNULL sulla tabella

Qui vedremo come sostituire il valore di una colonna con un valore significativo quando contiene valori nulli. Creiamo prima una tabella denominata ' Dipendente' utilizzando la seguente dichiarazione:

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

Ora inseriremo alcuni valori in questa tabella utilizzando la seguente istruzione:

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

Quando verifichiamo la tabella, possiamo vederlo i dipendenti 2 e 3 hanno un NULL valore.

Funzione ISNULL di SQL Server

Supponiamo di voler sostituire i valori NULL di queste colonne senza aggiornarle permanentemente nella tabella. In tal caso, possiamo utilizzare la funzione ISNULL per sostituire i valori NULL con il valore specifico.

hashset vs hashmap

Per esempio , vogliamo restituire il file età E stipendio dell'impiegato con 22 e 25000, rispettivamente, se le relative colonne hanno valori NULL nella tabella Impiegato. Possiamo farlo utilizzando la seguente istruzione:

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

Dopo l'esecuzione, otterremo l'output seguente:

Funzione ISNULL di SQL Server

Se eseguiamo la query con la funzione ISNULL per la colonna in cui nessuna colonna ha valori NULL nella tabella, questa query restituirà i valori effettivi delle righe.

Per esempio , abbiamo aggiornato il stipendio del dipendente di cui ID=2 come segue:

 UPDATE Employee SET Salary = 65000 WHERE ID=2; 

Ancora una volta, se eseguiamo la funzione ISNULL, non cambia la colonna dello stipendio. Vedere l'output seguente:

Funzione ISNULL di SQL Server

5. ISNULL con funzioni aggregate

SQL Server ci consente anche di utilizzare le funzioni aggregate come SUM, AVG con la funzione ISNULL. Supponiamo che potremmo aver bisogno di ottenere il file somma di uno stipendio colonna presente nella tabella Dipendente e se una colonna stipendio ha NULL, verrà sostituita con 25000 prima di aggiungere gli stipendi.

Prima di eseguire i metodi di aggregazione, aggiorneremo lo stipendio del dipendente con NULL il cui ID è 2, utilizzando la query seguente.

 UPDATE Employee SET Salary = NULL WHERE ID=2; 

L'esempio seguente sostituisce innanzitutto il valore NULL con 25000 e quindi esegue la funzione SUM su di esso. Vedere l'output seguente:

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

Dopo l'esecuzione, otterremo l'output seguente:

Funzione ISNULL di SQL Server

Allo stesso modo, la funzione ISNULL può essere utilizzata per sostituire i valori NULL e quindi restituire il valore medio Funzione AVG() . Vedere la dichiarazione seguente:

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

Dopo l'esecuzione, otterremo l'output seguente:

Funzione ISNULL di SQL Server

Differenza tra SQL Server ISNULL con IS NULL

Le funzioni ISNULL e IS NULL sono entrambe diverse in SQL Server. Usiamo la funzione ISNULL quando ne abbiamo bisogno sostituire i valori NULL con un valore specificato. D'altra parte, utilizziamo la funzione IS NULL quando vogliamo identificare i valori NULL in un tavolo.

Vediamo l'esempio seguente per illustrare le loro differenze .

Supponiamo di voler ottenere i dati dei dipendenti da ' Dipendente' tabella che contiene valori NULL nella colonna Stipendio. Per ottenere questo tipo di informazioni, dovremmo utilizzare la funzione IS NULL nel file DOVE clausola come segue:

 SELECT * FROM Employee WHERE Salary IS NULL; 

Restituirà i dettagli del dipendente il cui stipendio è NULL:

Funzione ISNULL di SQL Server

Ora, se proviamo a ottenere questo tipo di informazioni con la funzione ISNULL, SQL Server procede come segue errore :

cosa rende veloce un pc
 SELECT * FROM Employee WHERE Salary ISNULL(NULL, 0; 

Ecco l'errore:

Funzione ISNULL di SQL Server

Pertanto, è chiaro che SQL Server non ci consente di utilizzare ISNULL per trovare valori NULL.