代码之家  ›  专栏  ›  技术社区  ›  Iniyavan

SQL Server-如果条件为空,则为空-ISNULL,则为合并

  •  0
  • Iniyavan  · 技术社区  · 2 年前

    我期待着在这个案例中打印其他部分。但事实并非如此。如果输入为空,则有效 '' .但是 null ,它失败了。即使 ISNULL COALESCE ,是一样的。你能解释一下逻辑吗?

    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;
    
    1 回复  |  直到 2 年前
        1
  •  0
  •   Jonas Metzler    2 年前

    因为变量为null,所以不能用if或else子句中的字符串连接它。 你必须移除它。。。

    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;
    

    ...或者用非空值替换它,例如使用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;
    

    你可以在这里测试: db<>fiddle

    推荐文章