gpt4 book ai didi

sql - 大于SQL CASE语句

转载 作者:行者123 更新时间:2023-12-04 11:16:39 24 4
gpt4 key购买 nike

我很难找出比SQL语句更大的内容。

这是我的代码:

select one, two three from orders
where case when @orderid > 0 then orders.orderid = @orderid end




@orderid是传递给存储过程的参数。这个想法是,如果传递了有效的(> 0)orderid,则将其用作where子句中的过滤器,否则不要全部使用。

最佳答案

Guffa的答案正确,但是使用CASE技巧(偶尔会派上用场)的方式是这样的:

--If order ID is greater than 0, use it for selection
--otherwise return all of the orders.
select one, two, three
from orders
where orders.orderid = CASE
WHEN @orderid > 0 then @orderid
ELSE orders.orderid
END


CASE始终必须返回某些内容,因此,如果您希望有条件地“禁用” WHERE子句中的语句并且不能使用OR,则可以将其设置为等于其自身,并且该值应始终为true(比较空值时除外) )。

编辑:我也应该说,在这样的查询中,可以返回的行数可能有很大的不同(一行对整个表),使用OPTION(RECOMPILE)提示可能会在单行情况下提高性能。

关于sql - 大于SQL CASE语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18939314/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com