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.
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
NULLDECLARE @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 spaziDECLARE @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'