SQL Server:在{表达式}时为空,在{表达式}则为空的情况下选择情况
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SQL Server:在{表达式}时为空,在{表达式}则为空的情况下选择情况相关的知识,希望对你有一定的参考价值。
所以我有这段代码,它是存储过程的一部分
INSERT INTO #TempTable
/* A few subqueries, about 100 lines */
WHERE (cartera.ClaSucursal = @pIdSucursal OR @pIdSucursal = -1)
AND (cartera.ClaAsesorActual =
CASE
WHEN @pIdAsesor > 0 THEN @pIdAsesor
WHEN @pIdAsesor = 0 THEN NULL
END
OR @pIdAsesor = -1)
/* Rest of my code, about 200 lines */
SELECT * FROM #TempTable
基本上,我有一个名为@pIdAsesor
的参数,根据其值,可能会有三个可能的结果。
- [
@pIdAsesor = -1
这使我所有与ID值有关的条目] - [
@pIdAsesor = sumId
这会带给我所有具有给定ID的条目 @pIdAsesor = 0
将所有带NULL作为ID的条目带给我
结果1和2完美地工作,但是方案3并没有带来结果。
答案
u无法说=,如果结果为null时为null,但是= null不起作用,您必须说为null
另一答案
null
不是值-缺少值。 null
从不等于任何东西(甚至不等于其他任何null
),但是您可以使用is
运算符显式检查它。
您可以放弃case
表达式并使用一系列or
来构建此逻辑:
AND ((@pIdAsesor = -1) OR
(@PIdAsesor = 0 AND cartera.ClaAsesorActual IS NULL) OR
(@pIdAsesor = cartera.ClaAsesorActual))
以上是关于SQL Server:在{表达式}时为空,在{表达式}则为空的情况下选择情况的主要内容,如果未能解决你的问题,请参考以下文章
SOAP UI:获取响应时出错;尝试连接到 Microsoft SQL Server 时为 null