WHERE子句中的SQL参数以获取NULL值

时间:2016-10-28 20:38:09

标签: sql null where param

Declare @param char(1)
SET @param = 'A'

@param可以是'A','B'或'C'

SELECT x, y FROM myTbl
WHERE y = @param

如果@param ='A'或'B'则y = @param正常工作 如果@param ='C',那么我想要WHERE来获取y IS为空的行

我可以使用动态sql实现这一点,但无法在没有动态sql的情况下弄清楚如何做到这一点。有什么想法吗?

1 个答案:

答案 0 :(得分:1)

使用基本布尔逻辑:

SELECT x, y
FROM myTbl
WHERE y = @param or (@param = 'C' and y is null);

如果你真的想要更明确:

SELECT x, y
FROM myTbl
WHERE (@param <> 'C' AND y = @param) OR
      (@param = 'C' AND y IS NULL);