Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server sql server条件语句,其中_Sql Server_Conditional_Where Clause - Fatal编程技术网

Sql server sql server条件语句,其中

Sql server sql server条件语句,其中,sql-server,conditional,where-clause,Sql Server,Conditional,Where Clause,我不知道这有多容易,但我还是没办法想清楚。我希望能够更改上面查询中的where子句,这样,如果使用0而不是1-2-3或4作为@categoryid,它将选择所有类别。我在数据库中没有任何类别为0。当您要选择所有类别时,可以将其设置为NULL,只需像这样修改选择即可 select * from table where category=@categoryid 当您想要选择所有类别时,可以将其设置为NULL,只需像这样修改选择即可 select * from table where categor

我不知道这有多容易,但我还是没办法想清楚。我希望能够更改上面查询中的where子句,这样,如果使用0而不是1-2-3或4作为@categoryid,它将选择所有类别。我在数据库中没有任何类别为0。

当您要选择所有类别时,可以将其设置为NULL,只需像这样修改选择即可

select * from table where category=@categoryid

当您想要选择所有类别时,可以将其设置为NULL,只需像这样修改选择即可

select * from table where category=@categoryid
这是SQL而不是PL/SQL。 在发送请求之前,您需要测试该值。您不能要求SQL为您测试该值。

这是SQL而不是PL/SQL。
在发送请求之前,您需要测试该值。您不能要求SQL为您测试该值。

这可能应分为两个单独的查询,除非您确实希望在@categoryid=0和@categoryid0的情况下使用相同的完整聚集索引扫描执行计划

通过将查询分为两个单独的查询,您可以通过索引搜索而不是完全扫描来满足@categoryid不为零的查询


如果表很小或者@categoryid不是很有选择性,那么这可能不是一个问题。

这可能应该分为两个单独的查询,除非您确实希望在@categoryid=0和@categoryid0的情况下使用相同的完整聚集索引扫描执行计划

通过将查询分为两个单独的查询,您可以通过索引搜索而不是完全扫描来满足@categoryid不为零的查询

如果表很小或者@categoryid不是很有选择性,那么这可能不是一个问题。

简单

select * from table where category= ISNULL( @categoryid, category )
简单

select * from table where category= ISNULL( @categoryid, category )
最小值和最大值将是其中之一

两者都是1或2或3或4 分别为0和一个高数字 这也将使用索引

最小值和最大值将是其中之一

两者都是1或2或3或4 分别为0和一个高数字
这也将使用索引。

我否决了你,因为我无法理解你的论点。很公平,这一次我似乎说得太过火了:我否决了你,因为我无法理解你的论点。很公平,这一次我好像是在胡说八道:DNO没有完全回答问题,但它比Matt Gibson的方法更简洁,但需要在客户端进行一些修改。DNO没有完全回答问题,但它比Matt Gibson的方法更简洁,但需要在客户端进行一些修改。@KM:听起来像是不可空列though@KM:听起来像是不可为空的列