如何在where闭包内使用IF语句 [英] How to use IF statement inside a where closure

查看:92
本文介绍了如何在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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆