I must to check if two values, X and Y are different. If both are null, they must be considered as equal.
The unique way I found is:
select 1 as valu
You could try using NULLIF like this:
WHERE NULLIF(@X,@Y) IS NOT NULL OR NULLIF(@Y,@X) IS NOT NULL
I think you could use COALESCE for that
WHERE coalesce(@X, '') <> coalesce(@Y, '')
What it does it returns an empty string if one of variables is null
, so if two variables are null
the two empty strings become equal.
You can use ISNULL
WHERE ISNULL(@X,'') <> ISNULL(@Y,'')
I typically use a technique I picked up from here
SELECT 1 AS valuesDifferent
WHERE EXISTS (SELECT @X
EXCEPT
SELECT @Y)
WHERE EXISTS
returns true if the sub query it contains returns a row. This will happen in this case if the two values are distinct. null is treated as a distinct value for the purposes of this operation.