SQL - 根据任一参数可为空的参数检索记录

SQL - Retrieve records based on parameters where either parameter can be null

我有一个存储过程,它接受五个参数,其中两个可以为空 - 我们将这些参数称为 A 和 B

我想做的是select条记录,按照下面的逻辑

如果参数 A 为 NULL,则只有 return 条记录匹配参数 B

我知道我可以做类似下面的事情

  IF A IS NULL 
    BEGIN
    SELECT * FROM TABLE WHERE Param=B    
    END
    ELSE
BEGIN
 SELECT * FROM TABLE WHERE Param=A    
END

但是,SQL 查询比上面的查询复杂得多,而且 Proc 中会有大量复制,这是我想避免的事情

提前致谢

=================================

编辑 - 抱歉,我应该提到示例中的参数基于单独的列,例如

我的 table 由四列组成,其中两个单独的列映射到两个参数 - 下面的基本架构

编号 人名 群号 交货ID

在我的程序中,我想检索那些与 GroupID 匹配的记录,但是 在 GroupID 为空的情况下,我想 return 那些匹配的记录DeliveryID

再次感谢

尝试 ISNULL 函数:

SELECT * FROM TABLE WHERE Param = ISNULL(B,A) 

尝试

SELECT * FROM my_table WHERE Param = COALESCE(A,B)

COALESCE 如果它不为空,将给你 A。否则 B.

您还可以使用 case 语句 Case when A is Null Then B

从功能上讲,像这样的东西应该可以工作。如果其中一个参数是 NULL,则条件变为自我标识(假设 groupIDdeliveryID 都不为 NULL)。

SELECT *
  FROM table_name
 WHERE groupID    = coalesce(@groupIDParameter, groupID)
   AND deliveryID = coalesce(@deliveryIDParameter, deliveryID)