代码之家  ›  专栏  ›  技术社区  ›  Bimal Das

当我传递空值时,coalesce函数不工作,但当声明变量为空时,它工作。

  •  1
  • Bimal Das  · 技术社区  · 7 年前

    NULL

    DECLARE 
    @a int = NULL,
    @b int = NULL,
    @c int = NULL
    SELECT COALESCE(@a, @b,@c)
    GO
    

    SELECT COALESCE(NULL, NULL,NULL)
    GO
    

    2 回复  |  直到 7 年前
        1
  •  5
  •   Gordon Linoff    7 年前

    coalesce() NULL

    你的问题似乎真的是:“为什么它做了明确的检查 无效的 但不在变量上?”因为它可以在编译阶段轻松地进行检查。虽然 编译程序 如果可以跟踪默认值,任何中间分配都会使问题成为编译器无法解决的问题。所以,SQL Server只是说“我不知道变量是否 无效的 “或者不”,而且这一声明汇编得很好。

        2
  •  1
  •   nealkernohan    7 年前

    答案在从SQL Server返回的错误消息中。要合并的参数中必须至少有一个不是空常量的表达式。

    我想不出一个原因,除非测试是否捕获了此错误,否则无法使用多个空值执行查询,其中没有包含非空常量的参数。

    你想达到什么目的?