在T-SQL中比较两个可以使用NULL的变量

Bra*_*vic 3 t-sql sql-server

假设我有两个可能为NULL的变量,我想检查它们是否不同.

但是,我想:

  • 将两个NULL视为相等(不是NULL).
  • 将NULL和非NULL视为不相等(不是NULL).

我知道我可以写:

DECLARE @v1 int = ...;
DECLARE @v2 int = ...;

IF (
    (@v1 IS NULL AND @v2 IS NOT NULL)
    OR (@v1 IS NOT NULL AND @v2 IS NULL)
    OR @v1 <> @v2
)
    PRINT 'Different!';
Run Code Online (Sandbox Code Playgroud)

但是有更优雅的方式吗?

adr*_*anm 5

只是为了表明有很多方法可以做到这一点.

IF EXISTS(SELECT @v1 EXCEPT SELECT @v2)
    PRINT 'Different'
Run Code Online (Sandbox Code Playgroud)

  • 行为正确,但比我的"普通"IF慢大约2倍(在大多数情况下可能不是问题),并且更难以阅读(恕我直言),所以我不会接受它作为答案.谢谢你的努力!+1 (3认同)