T-SQL ISNULL e NULLIF (IsNullOrEmpty)
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 NULLT-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 spaziT-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'