web-dev-qa-db-ja.com

elseステートメントなしでcaseステートメントを記述できますか

私はこのクエリを持っています:

select case when id=1 then 'A'
when id=2 then 'B'
end 
from test

私にo/pを与えています

Id
A
B
ヌル
ヌル
ヌル

出力にNULL値を含めたくありません。AとBでのみ比較したいのですが、caseステートメントで可能です。

8
Red Devil

case式は式の値のみを操作でき、結果から行を削除できません。結果からnullsを省略したい場合は、where句を追加する必要があります。

SELECT CASE WHEN id = 1 THEN 'A'
            WHEN id = 2 THEN 'B'
       END 
FROM   test
WHERE  id IN (1, 2) -- HERE
7
Mureinik

WHERE句を使用して、出力を制限できます。

SELECT CASE WHEN id=1 THEN 'A'
WHEN id=2 THEN 'B'
END 
FROM test
WHERE id IN (1,2)

または、nullの代わりに他の値を表示する場合は、elseステートメント内でCASE部分を使用します。

SELECT CASE WHEN id=1 THEN 'A'
WHEN id=2 THEN 'B' ELSE 'Invalid'
END 
FROM test
1
Unnikrishnan R