我有一个现有的存储过程,我添加了一些参数来过滤结果。但是当@id_account为null时,它返回空数据。我想跳过AND当@id_account为空时,我尝试IF条件,但它不会工作。有什么建议吗?谢谢:D
AND
(
pd_account.id_account = @id_account
)
答案 0 :(得分:1)
使用:
AND
(
pd_account.id_account = COALESCE(@id_account,pd_account.id_account)
)
返回列表中的第一个非NULL值,如果没有则返回NULL 非NULL值。
因此,如果未提供@id_account
,则条件为pd_account.id_account =pd_account.id_account
,相当于1=1
始终为真。
您可以使用CASE,如:
AND pd_account.id_account = CASE WHEN @id_account IS NOT NULL THEN @id_account
ELSE pd_account.id_account
END