- ベストアンサー
Oracleのnull
ちょっとオラクルの検索文で困ったことがでてきました。 temp ------- col1 col2 col3 と言うようなテーブルがあります。 select col1 || '(' || col2 || ')' as col from temp; というような検索文を作成しましたが、テーブルのcol1とcol2が両方とも nullのデータは'()'となってしまいます。 col1とcol2は片方だけがnullと言うことはありません。 col1がnullの場合はcol2もnullです。 このような場合col1とcol2がnullの時は、結果のcolもnullにしたいのですが どうしたら出来るのでしょうか? また、無理なら無理と教えてください。 よろしくお願いします。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
少々面倒ですが、DECODE関数を使ってみたらどうでしょうか。 DECODE関数は条件置換を行うことの出来る関数です。 DECODE(COL,'A',1,'B',2,3) とかくと、COLの値が'A'のときは1、'B'のときは2、それ以外は3 が返されます。 ですので、 select col1 || decode(col2,null,null,'(') || col2 || decode(col2,null,null,')') as col from temp; でうまくnullになるのではないでしょうか。 decodeはネストすることも出来ますので、 select col1 || decode(col1,null,decode(col2,null,null,'('), null,'(') || col2 || decode(col1,null,decode(col2,null,null,'('), ,')') as col from temp; でさらに正確に置換することが出来ます。 こんなところでどうでしょうか。
その他の回答 (1)
- timber
- ベストアンサー率29% (218/739)
select decode(col1, null, null, col1 || '(' || col2 || ')' ) as col from temp; 上記でできると思います。
お礼
有難うございます。オラクルって本当に便利ですね。
お礼
有難うございます。詳しい説明でわかりやすかったです。