• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:抽出条件入力用テキストボックスが空白の場合の抽出条件)

SQL初心者のための抽出条件入力について

このQ&Aのポイント
  • SQL初心者が抽出条件入力用テキストボックスの使い方について質問しています。具体的には、テーブルにある複数の列に対して値を入力して検索する方法を知りたいとのことです。
  • 具体的な例として、VALUE_B、VALUE_C、VALUE_Dの3つの列に値を入力して検索を行う場合の動作について説明されています。また、複数の列に対して値を指定した場合の動作についても示されています。
  • SQLのANDやORだけでは対応できない場合もあるため、その場合にどのようなSQLを組めば良いか分からないとのことです。また、Oracleを始めたばかりのため、どのような関数を使うべきかも分からないとのことです。

質問者が選んだベストアンサー

  • ベストアンサー
  • NAATAN
  • ベストアンサー率33% (57/170)
回答No.2

No.1です。 下記の回答は、未入力の場合にNULLがセットされると仮定した場合ですが、空白がセットされる場合は以下の様になります。 SELECT VALUE_A FROM TABLE WHERE DECODE([VALUE_B],' ',NVL(VALUE_B,'0'),[VALUE_B]) = NVL(VALUE_B,'0') AND DECODE([VALUE_C],' ',NVL(VALUE_C,'0'),[VALUE_C]) = NVL(VALUE_C,'0') AND DECODE([VALUE_D],' ',NVL(VALUE_D,'0'),[VALUE_D]) = NVL(VALUE_D,'0')

wiser
質問者

お礼

早速の回答、ありがとうございます。 こちらでも動作確認が取れました。 DECODEはIFのような条件判断を多数行ってくれる、便利な関数なんですね。勉強になりました。

その他の回答 (1)

  • NAATAN
  • ベストアンサー率33% (57/170)
回答No.1

FORMSについての知識は全く無いのですが… 一般的なSQLを組むとすると以下の様になると思います。 SELECT VALUE_A FROM TABLE WHERE NVL([VALUE_B],NVL(VALUE_B,'0')) = NVL(VALUE_B,'0') AND NVL([VALUE_C],NVL(VALUE_C,'0')) = NVL(VALUE_C,'0') AND NVL([VALUE_D],NVL(VALUE_D,'0')) = NVL(VALUE_D,'0') 9iで試してみたら上手くいきました。 「VALUE_B,'0'」の「'0'」の部分は何でもかまいませんが、形式だけは合わせてください)