質問 |
||
| QNo.3991457 | 「何々でなければ、この値」というような関数 | |
|---|---|---|
| 質問者:noname#62152 |
「何々でなければ、この値」というような関数を探しています。 こんな感じです。 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' ) ただ、わかりにくい感じがするので。 |
|
困り度:
|
||
| 質問投稿日時: 08/05/02 03:05 |
||
回答 |
|
| ANo.3 | 関数を使わない案として select IIF(ZZZ = 'A','','P') from テーブル; または、 select CASE〜 IIFでは、ZZZ='A'が真の場合は''を返却 以外は'P'を返却します。 ※すみません、検証してないので、構文あってないかもしれません。関数使わなくていいなら、SELECT CASE、IIF関数で目的達成できるかもと思った次第です。 |
|---|---|
| 回答者:WIZDASH | |
| 種類:アドバイス どんな人:一般人 自信:参考意見 |
|
| 回答日時: 08/05/05 00:29 |
|
| |
| この回答へのお礼 | ご回答ありがとうございます |
回答良回答10pt |
|
| ANo.2 | CASE ZZZ WHEN 'A' THEN 'A' ELSE 'P' END というCASE式でいかがでしょう。 コーディングは長めですが、意味は明確です。 もちろん、1行に書いてもかまいません。 |
|---|---|
| 回答者:masa6272 | |
| 種類:回答 どんな人:経験者 自信:参考意見 |
|
| 回答日時: 08/05/02 07:16 |
|
| |
| この回答へのお礼 | ご回答ありがとうございます |
回答良回答20pt |
|
| ANo.1 | >>> NVL2 ( NULLIF('A', ZZZ), 'P', 'A' ) >>> ただ、わかりにくい感じがするので。 慣れだと思うのでそれでよいでしょうが、 DECODE(ZZZ,'A','A','P') というのも考えられます。 |
|---|---|
| 回答者:auty | |
| 種類:アドバイス どんな人:経験者 自信:参考意見 |
|
| 回答日時: 08/05/02 04:32 |
|
| |
| この回答へのお礼 | ご回答ありがとうございます。 |