如何在where闭包内使用IF语句 [英] How to use IF statement inside a where closure
本文介绍了如何在where闭包内使用IF语句的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
这是我的代码:
如何在封闭的地方使用IF语句,请帮我重新安排这些代码
WHERE
IF IsNumeric( @ OrderNumber )= 1
OrderNumber = @ OrderNumber
ELSE
BillId = @ OrderNumber
< b>我尝试过:
WHERE
IF IsNumeric( @ OrderNumber )= 1
OrderNumber = @ OrderNumber
ELSE
BillId = @ OrderNumber
解决方案
WHERE - 基于值
CASE IsNumeric( @ OrderNumber )
WHEN 1 那么 OrderNumber = @ OrderNumber
ELSE BillId = @ OrderNumber
END
WHERE - 基于布尔值
CASE
WHEN IsNumeric( @ OrderNumber )= 1 T HEN OrderNumber = @ OrderNumber
ELSE BillId = @ OrderNumber
END
希望有所帮助^ _ ^
Andy
更新:实际上,正如所指出的,这个不行。案例只能返回一个值,不能用作逻辑条件。
在这种情况下可以这样使用:
WHERE - boolean基于
CASE
WHEN IsNumeric( @ OrderNumber )= 1 那么 OrderNumber
ELSE BillId
END = @ OrderNumber
或者,同样有效的是使用OR子句:
WHERE -
(IsNumeric( @ OrderNumber )= 1 AND OrderNumber = @ OrderNumber )
或
(IsNumeric( @ OrderNumber )= 0 AND BillId = @ OrderNumber )
This is my code:
How to use IF statement inside a where closure,Plese help me for re-arrange these code
WHERE
IF IsNumeric(@OrderNumber) = 1
OrderNumber = @OrderNumber
ELSE
BillId= @OrderNumber
What I have tried:
WHERE
IF IsNumeric(@OrderNumber) = 1
OrderNumber = @OrderNumber
ELSE
BillId= @OrderNumber
解决方案
Use CASE:
WHERE --Value based CASE IsNumeric(@OrderNumber) WHEN 1 THEN OrderNumber = @OrderNumber ELSE BillId= @OrderNumber END
WHERE --boolean based CASE WHEN IsNumeric(@OrderNumber) = 1 THEN OrderNumber = @OrderNumber ELSE BillId= @OrderNumber END
Hope that helps ^_^
Andy
UPDATE: Actually, as pointed out, this won't work. The case can only return a value, not be used as a logical condition.
It can be used in this case as so:
WHERE --boolean based CASE WHEN IsNumeric(@OrderNumber) = 1 THEN OrderNumber ELSE BillId END = @OrderNumber
or, just as valid would be to use an OR clause:
WHERE -- ( IsNumeric(@OrderNumber) = 1 AND OrderNumber = @OrderNumber) OR ( IsNumeric(@OrderNumber) = 0 AND BillId= @OrderNumber)
这篇关于如何在where闭包内使用IF语句的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文