-2

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

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

每当其他部分正在执行时,如果 vnd 为空,除了 0 我没有得到 sty 列。如果 vnd 存在,那么我需要连接 ':' vnd 和 sty 值。

4

2 回答 2

0

我实际上不确定您在这里需要什么。我想我有一个想法,但需要澄清一下。你是说如果 vnd 为空,那么你没有得到 sty 字段?

如果这是真的,那么 DB2 正在做您想做的事,因为将空值连接到其他值也会返回空值。

CASE 
    WHEN itm > 0 THEN itm
    WHEN (vnd IS NULL OR vnd = 0) THEN sty
    ELSE vnd || ':' || sty
END
于 2013-03-20T16:04:14.053 回答
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 
于 2013-03-20T16:01:49.780 回答