'SQL Server - NULL vs blank in IF condition - ISNULL vs COALESCE
I am expecting ELSE part to be printed in this case. But it doesn't. It works if the input is blank ''. But for null, it fails. Even with ISNULL and COALESCE, it is same. Could you please explain the logic?
DECLARE @V_MY_VAR VARCHAR(50) = NULL;
IF ISNULL(@V_MY_VAR,'X') = 'HELLO'
BEGIN
PRINT 'INSIDE IF - '+ @V_MY_VAR;
END;
ELSE
BEGIN
PRINT 'INSIDE ELSE - '+ @V_MY_VAR;
END;
Solution 1:[1]
Since your variable is null, you can't concat it with the string in your if or else clause. You must remove it...
DECLARE @V_MY_VAR VARCHAR(50) = NULL;
IF ISNULL(@V_MY_VAR,'X') = 'HELLO'
BEGIN
PRINT 'INSIDE IF - ';
END;
ELSE
BEGIN
PRINT 'INSIDE ELSE - ';
END;
...or replace it by a non null value, as example using your propose ISNULL.
DECLARE @V_MY_VAR VARCHAR(50) = NULL;
IF ISNULL(@V_MY_VAR,'X') = 'HELLO'
BEGIN
PRINT 'INSIDE IF - '+ ISNULL(@V_MY_VAR,1);
END;
ELSE
BEGIN
PRINT 'INSIDE ELSE - '+ ISNULL(@V_MY_VAR,2);
END;
You can test this here: db<>fiddle
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
| Solution | Source |
|---|---|
| Solution 1 | Jonas Metzler |
