SQL Server只有在不为空的情况下

时间:2015-11-19 13:49:04

标签: sql sql-server

我必须在一些变量之后选择行,这些变量将打开或关闭某些条件,例如:

SELECT *
FROM table
WHERE field =
   CASE @param
       WHEN NULL THEN field
       ELSE @param
   END

换句话说..我想比较@param不是null,但我的选择不起作用。我该怎么办?

谢谢!

3 个答案:

答案 0 :(得分:2)

@param为空时,它将使用field,当@param不为空时,它将使用@param

SELECT *
FROM table
WHERE field = ISNULL(@param,field)

field = field永远都是真的。 所以你可能想要的是:

SELECT *
FROM table
WHERE field = @param
    and @param is not null

答案 1 :(得分:2)

为什么单个交换机使用Case? OR语句应该可以解决问题。

SELECT *
FROM table
WHERE @param IS NULL OR Field = @Param

答案 2 :(得分:0)

应该是这样的:

Object *apple;
apple = new Object();

delete apple;