dポイントプレゼントキャンペーン実施中!

「何々でなければ、この値」というような関数を探しています。

こんな感じです。
func(ZZZ, 'A', 'P')
ZZZが'A'でなければ'P'を返す


イメージ

select ZZZ z, func(ZZZ, 'A', 'P')  f from テーブル;

z     f
-   -
A    A
NULL P
P    P
B    P


なお、一つの関数である必要はなく、関数を組み合わせたり、入れ子にしたりするのはかまいません。

もしかすると、次のようにするとできるかもしれません。
NVL2 ( NULLIF('A', ZZZ), 'P', 'A' )

ただ、わかりにくい感じがするので。

A 回答 (3件)

>>> NVL2 ( NULLIF('A', ZZZ), 'P', 'A' )


>>> ただ、わかりにくい感じがするので。

慣れだと思うのでそれでよいでしょうが、

DECODE(ZZZ,'A','A','P')

というのも考えられます。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。

お礼日時:2008/05/08 05:46

関数を使わない案として



select IIF(ZZZ = 'A','','P') from テーブル;
または、
select CASE~

IIFでは、ZZZ='A'が真の場合は''を返却
以外は'P'を返却します。

※すみません、検証してないので、構文あってないかもしれません。関数使わなくていいなら、SELECT CASE、IIF関数で目的達成できるかもと思った次第です。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます

お礼日時:2008/05/08 05:46

CASE ZZZ


  WHEN 'A' THEN 'A'
  ELSE 'P'
END

というCASE式でいかがでしょう。
コーディングは長めですが、意味は明確です。
もちろん、1行に書いてもかまいません。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます

お礼日時:2008/05/08 05:46

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

関連するカテゴリからQ&Aを探す