-2

nullif 関数を使用した case ステートメントがあります...

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

vnd が null の場合、他の部分が実行されているときはいつでも、0 に過ぎません。vnd が存在する場合は、vnd と sty の両方の値を「:」で連結する必要があります。

4

2 に答える 2

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 に答える
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
于 2013-03-20T16:04:14.053 に答える