大于SQL CASE语句
发布时间:2020-12-12 16:39:22 所属栏目:MsSql教程 来源:网络整理
导读:我很难想出比SQL语句更大的一个. 这是我的代码: select one,two three from orderswhere case when @orderid 0 then orders.orderid = @orderid end @orderid是传递给存储过程的参数.这个想法是,如果传递了一个有效的( 0)orderid,那么在where子句中使用它作
我很难想出比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(除非比较null ). 编辑:我也应该说,对于这样的查询,可以返回的行数可能会有很大的变化(一行与整个表),使用OPTION(RECOMPILE)提示可能会有助于在单行情况下执行性能. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |