Una comparazione tra le istruzioni T-SQL di SQL Server ISNULL e NULLIF.

ISNULL

L'istruzione ISNULL(espressione1, valoreSostitutivo) permette di valutare l'espressione passata e, se il il risultato è NULL ritorna il valore valoreSostitutivo, altrimenti ritorna il valore dell'espressione1.
T-SQL
DECLARE @v int = 4;
SELECT ISNULL(@v, 0)  -- ritorna 4

SET @v = null;
SELECT ISNULL(@v, 0)  -- ritorna 0

NULLIF

L'istruzione NULLIF(espressione1, espressione2) valuta le due espressioni passate, se coincidono, ritorna il valore di espressione2, altrimenti ritorna NULL
T-SQL
DECLARE @v varchar(50) = 'prova';
SELECT NULLIF(@v, '')  -- ritorna 'prova'

SET @v = '';
SELECT NULLIF(@v, '')  -- ritorna NULL

IsNullOrWhiteSpace

Posso combinare le due istruzioni per valutare se un parametro stringa è NULL oppure se contiene solo spazi
T-SQL
DECLARE @v varchar(50) = 'prova';
SELECT ISNULL(NULLIF(@v, ''), 'nullOrWhiteSpace')  -- ritorna 'prova'

SET @v = '  prova     '; 
SELECT ISNULL(NULLIF(@v, ''), 'nullOrWhiteSpace')  -- ritorna '  prova     '

SET @v = '';
SELECT ISNULL(NULLIF(@v, ''), 'nullOrWhiteSpace')  -- ritorna 'nullOrWhiteSpace'

SET @v = '        ';  -- stringa con solo spazi
SELECT ISNULL(NULLIF(@v, ''), 'nullOrWhiteSpace')  -- ritorna 'nullOrWhiteSpace'

SET @v = NULL;
SELECT ISNULL(NULLIF(@v, ''), 'nullOrWhiteSpace')  -- ritorna 'nullOrWhiteSpace'
Potrebbe interessarti anche: