通过where子句 - mssql中的case语句分配null或not null

时间:2016-03-01 15:11:11

标签: sql sql-server sql-server-2008

对不起,如果之前有人询问,我真的搜索过但找不到。

我要做的是分配' null'或者' not null'到varchar变量,具体取决于MS SQL中的参数。在第一个,用户只有在他/她选择1作为索引时才会看到描述。在第二个,如果记录的年份列大于2005,用户将看到描述。我正在尝试的代码在下面,但没有工作。有人可以帮我解决这个问题吗?真的很感激。

感谢。

--- First one---
Declare @index int;
Select * from Cars
Where Description is (case when @index = 1 then ‘not null’ else ‘null’ end)

---Second one----
Select * from Cars
where Description is (case when Cars.Year > 2005 then ‘not null’ else ‘null’ end)

1 个答案:

答案 0 :(得分:3)

第一个:

SELECT * 
FROM Cars
WHERE (Description IS NOT NULL) AND (@index = 1) 
       OR
      (Description IS NULL) AND (@index <> 1) 

第二个:

SELECT * 
FROM Cars
WHERE (Description IS NOT NULL) AND (Year > 2005)
       OR 
      (Description IS NULL) AND (Year <= 2005)
SQL中的

CASE表达式,不能用作流控制语句。