2013-03-20 29 views
-2

的其他部分我有case語句與NULLIF函數...如何使用NULLIF函數在case語句

case when itm>0 then itm else nullif(vnd||':','0:')||sty end 

每當其他部分被執行,如果越南盾爲null,不過0我沒有得到豬圈欄。 如果vnd存在,那麼我需要與':'vnd和sty值進行連接。

+1

目前尚不清楚你期望的是什麼:當sty爲null,當sty = 0,sty!= 0時,你能提供一個例子嗎? – 2013-03-20 15:48:22

回答

0

我不確定我完全理解你的問題,但這是否讓你接近你要找的東西?

DECLARE @itm VARCHAR(10), @sty VARCHAR(10), @vnd VARCHAR(10) 
SET @itm = '0' 
SET @sty = '2' 
SET @vnd = '3' 

SELECT 
case 
    when @itm>0 then @itm 
    WHEN @itm <= 0 THEN ISNULL(@vnd, 0) + ':' + ISNULL(@sty, '0') 
    END 
0

我真的不確定你在這裏需要什麼。我想我有一個想法,但需要澄清。你是說如果vnd爲null,那麼你沒有得到sty字段?

如果這是真的,那麼DB2正在做你想做的事情,因爲將null值連接到別的東西上也會返回null。

CASE 
    WHEN itm > 0 THEN itm 
    WHEN (vnd IS NULL OR vnd = 0) THEN sty 
    ELSE vnd || ':' || sty 
END 
+0

如果vnd是null,但0和sty包含ABC,那麼輸出將是0:ABC我不想要0:ABC我們只需要ABC。如果vnd和sty包含值(vnd:123&sty:ABC),那麼輸出應該是123:ABC – user2189200 2013-03-21 05:55:47

+0

我編輯了我的答案,我認爲這會給你你想要的東西... – bhamby 2013-03-21 13:35:27