2

在我的 sql 查询中,我有这个 where 条件:

WHERE 
  parentID = prj.parent_id
  and mandator_fk = mandator_id

该变量parentID默认为空。

如果此变量为 null,则WHERE条件应该是parentID is null而不像上面的查询 ( parentID = prj.parent_id)。如果填充此变量,则WHERE条件应为parentID = prj.parent_id

如何仅使用一个 sql 查询来执行此操作?


编辑:它在一个函数中,这就是为什么我只有一个 sql 查询。

我知道这不起作用,但这就像我需要的:

WHERE 
   CASE 
      WHEN parentID is null THEN parentID is null
   ELSE
     parentID = prj.parent_ID
   END
and mandator_fk = mandator_id

TIA frgtv10

4

2 回答 2

1

我不确定NVL()函数是否是可浪涌的,所以这里有另一种写条件的方法:

WHERE 
    ( parentID = prj.parent_id 
   OR parentID IS NULL AND prj.parent_id IS NULL
    )
  AND mandator_fk = mandator_id
于 2013-09-05T14:50:37.720 回答
1

似乎您想加入空值,因此您需要先转换它们。尝试这个:

where
NVL(parentId, 0) = NVL(prj.parent_id, 0)
and ...
于 2013-09-05T13:19:20.837 回答