Sql server Sql Server是否可以在同一if子句中使用多个OR条件

Sql server Sql Server是否可以在同一if子句中使用多个OR条件,sql-server,toad,Sql Server,Toad,我在IF子句中使用了多个OR条件,但它抛出了错误 在预期条件的上下文中指定的非布尔型表达式,靠近“或” DECLARE @PaidAmount1 DECIMAL(18, 2); DECLARE @PaidAmount2 DECIMAL(18, 2); DECLARE @PaidAmount3 DECIMAL(18, 2); DECLARE @PaidAmount4 DECIMAL(18, 2); IF(((ISNULL(@PaidAmount1,'')) OR (@PaidAmount1='

我在IF子句中使用了多个OR条件,但它抛出了错误 在预期条件的上下文中指定的非布尔型表达式,靠近“或”

DECLARE @PaidAmount1 DECIMAL(18, 2);
DECLARE @PaidAmount2 DECIMAL(18, 2);
DECLARE @PaidAmount3 DECIMAL(18, 2);
DECLARE @PaidAmount4 DECIMAL(18, 2);


IF(((ISNULL(@PaidAmount1,'')) OR (@PaidAmount1='') OR (@PaidAmount1=0.00)) AND ((ISNULL(@PaidAmount2,'')) OR (@PaidAmount2='') OR (@PaidAmount2=0.00)) AND ((ISNULL(@PaidAmount3,'')) OR (@PaidAmount3='') OR (@PaidAmount3=0.00)) AND ((ISNULL(@PaidAmount4,'')) OR (@PaidAmount4='') OR (@PaidAmount4=0.00)))
BEGIN
--statements goes here
END
我们可以使用上述的OR条件吗

谢谢!
Shyam

isnull
如果第一个参数不是
null
,则返回第一个参数;如果第一个参数是
null
,则返回第二个参数。正如错误消息所说,在本例中,它不是一个
布尔值。如果要检查nullibiliy,需要使用
is null
运算符:

IF (((@PaidAmount1 IS NULL) OR (@PaidAmount1 = '') OR (@PaidAmount1 = 0.00)) AND 
    ((@PaidAmount2 IS NULL) OR (@PaidAmount2 = '') OR (@PaidAmount2 = 0.00)) AND 
    ((@PaidAmount3 IS NULL) OR (@PaidAmount3 = '') OR (@PaidAmount3 = 0.00)) AND 
    ((@PaidAmount4 IS NULL) OR (@PaidAmount4 = '') OR (@PaidAmount4 = 0.00)))

((ISNULL(@PaidAmount1,,))
不是布尔表达式,所以,变量是小数,为什么要将它们与空字符串进行比较?使用类似的方法((ISNULL(@PaidAmount1,,)=“”)或者@PaidAmount1是NULLHoneyBadger,NP007您所说的是正确的。Decimal不接受字符串。这几乎是正确的,除了@PaidAmount1=''因为是十进制而不被接受。如果((@PaidAmount1为NULL)或(@PaidAmount1=0.00))和(@PaidAmount2为NULL)或(@PaidAmount2=0.00))和((@PaidAmount3为空)或(@PaidAmount3=0.00))和(@PaidAmount4为空)或(@PaidAmount4=0.00)))