我有一个存储过程,将根据是否可用项目来查询和返回记录。这部分很简单,我只是通过一个变量来检查可用的是或不是。 但是我想知道的是如何在那里抛出一切条款(即可用,不可用,或所有)?SQL过程where子句列出记录
where子句现在的问题是
where availability = @availability
availabitility的值是1或0,没有别的。
我有一个存储过程,将根据是否可用项目来查询和返回记录。这部分很简单,我只是通过一个变量来检查可用的是或不是。 但是我想知道的是如何在那里抛出一切条款(即可用,不可用,或所有)?SQL过程where子句列出记录
where子句现在的问题是
where availability = @availability
availabitility的值是1或0,没有别的。
您可以使用NULL来表示一切。
WHERE (@availability IS NULL OR availability = @availability)
所以这会带来两个地方可用性= @可用性和其他一切正确 – mattgcon 2010-10-31 23:08:07
正确,如果@availability为NULL,则返回所有内容。如果@availability不为NULL,则只返回具有匹配可用性的记录。 – 2010-10-31 23:12:01
SELECT *
FROM mytable
WHERE @availability IS NULL
UNION ALL
SELECT *
FROM mytable
WHERE availability = @availability
传递一个NULL
值将选择一切。
该查询将使用availability
上的索引(如果有的话)。
多种方式。 Simpliest方式是设置@availability的默认值设置为null,然后你的where子句是这样
WHERE (@availability IS NULL OR availability = @availability)
不知道@availability的类型,但假设-1 =一切,那么你可以简单地做一个
where @availability = -1 OR availability = @availability
可用性是1或0,如果用户想要看到所有这些,我将如何恢复所有内容 – mattgcon 2010-10-31 23:05:51
你问你如何检索所有记录?然后,完全放弃where子句。 – 2010-10-31 22:29:45