2010-10-31 57 views
0

我有一个存储过程,将根据是否可用项目来查询和返回记录。这部分很简单,我只是通过一个变量来检查可用的是或不是。 但是我想知道的是如何在那里抛出一切条款(即可用,不可用,或所有)?SQL过程where子句列出记录

where子句现在的问题是

where availability = @availability 

availabitility的值是1或0,没有别的。

+0

你问你如何检索所有记录?然后,完全放弃where子句。 – 2010-10-31 22:29:45

回答

1

您可以使用NULL来表示一切。

WHERE (@availability IS NULL OR availability = @availability) 
+0

所以这会带来两个地方可用性= @可用性和其他一切正确 – mattgcon 2010-10-31 23:08:07

+0

正确,如果@availability为NULL,则返回所有内容。如果@availability不为NULL,则只返回具有匹配可用性的记录。 – 2010-10-31 23:12:01

0
SELECT * 
FROM mytable 
WHERE @availability IS NULL 
UNION ALL 
SELECT * 
FROM mytable 
WHERE availability = @availability 

传递一个NULL值将选择一切。

该查询将使用availability上的索引(如果有的话)。

0

多种方式。 Simpliest方式是设置@availability的默认值设置为null,然后你的where子句是这样

WHERE (@availability IS NULL OR availability = @availability) 
0

不知道@availability的类型,但假设-1 =一切,那么你可以简单地做一个

where @availability = -1 OR availability = @availability 
+0

可用性是1或0,如果用户想要看到所有这些,我将如何恢复所有内容 – mattgcon 2010-10-31 23:05:51