我有一个关于where语句中的case语句和null的问题。SQL Where Where
我要做到以下几点:
Declare @someVar int = null
select column1 as a from
TestTable t
where column1 = case when @someVar is not null then @someVar else column1 end
这里的问题是:
比方说@someVar为空。我们还要说TestTable中的column1具有NULL列值。然后,在case语句中我的条件t = t将始终评估为false。
我基本上只是希望能够根据@someVar的值(如果提供的话)有条件地过滤列。任何帮助?
我这样做是因为上面的生成语法错误(我在SQL Server) “其中@someVar为NULL或列1 = @someVar” 这一工程!你在做同样的事情吗? – needshelp 2010-05-11 00:32:58
不应该是OR column1 = COALESCE(@someVar,0) – 2010-05-11 00:39:06
@needshelp:你说得对。我已经更新了我的答案。 – 2010-05-11 06:17:50