如何在case语句的else部分使用nullif函数

时间:2013-03-20 15:38:23

标签: sql oracle db2

我有nullif函数的case语句......

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

如果其他部分正在执行,如果vnd为null,则只有0,我没有得到sty列。 如果vnd存在,那么我需要使用':'和vnd和sty值进行连接。

2 个答案:

答案 0 :(得分: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 

答案 1 :(得分:0)

我真的不确定你需要什么。我想我有一个想法,但需要做一些澄清。你是说如果vnd为null,那么你没有得到麦粒肿领域?

如果这是真的,那么DB2正在做你想要的,因为将null值连接到其他东西也会返回null。

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