2013-09-05 75 views
2

在我的SQL查詢我在這個地方條件:情況當變量爲null,則是空

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

回答

1

看來你要加入的空值,所以你需要將它們轉換第一。試試這個:

where 
NVL(parentId, 0) = NVL(prj.parent_id, 0) 
and ... 
+0

這就是我想要的! – frgtv10

1

我不知道,如果NVL()功能surgable,所以這裏是另一種方式來寫的條件:

WHERE 
    (parentID = prj.parent_id 
    OR parentID IS NULL AND prj.parent_id IS NULL 
    ) 
    AND mandator_fk = mandator_id