SQL Server 我们可以在同一个 IF 子句中使用多个 OR 和 AND 条件吗?



>我在 IF 子句中使用了多个 OR 和 AND 条件,但它抛出错误 在需要条件的上下文中指定的非布尔类型的表达式,靠近"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和AND条件吗?

谢谢! 希亚姆

isnull

如果不是null则返回第一个参数,如果第一个参数null,则返回第二个参数。正如错误消息所说,在这种情况下,这不是boolean。如果要检查无效性,则需要使用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)))

最新更新