当变量IS NULL时跳过AND

时间:2015-09-18 18:57:48

标签: mysql sql

我有一个现有的存储过程,我添加了一些参数来过滤结果。但是当@id_account为null时,它返回空数据。我想跳过AND当@id_account为空时,我尝试IF条件,但它不会工作。有什么建议吗?谢谢:D

AND ( pd_account.id_account = @id_account )

1 个答案:

答案 0 :(得分:1)

使用:

AND
(
  pd_account.id_account = COALESCE(@id_account,pd_account.id_account)
)

From COALESCE doc

  

返回列表中的第一个非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