- PR -

SQLでNULLを取得

投稿者投稿内容
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2003-10-15 10:26
引用:

ななさんの書き込み (2003-10-15 10:10) より:

%JYUCYUCD%がNULLのばあいはA.受注番号データを全件取得したいのですが・・。


えっと、「受注番号」列には、NULLも含まれているのでしょうか?

NVL(受注番号, 'NULL') = NVL(NVL(%JYUCYUCD%, 受注番号), 'NULL')
とか?
#受注番号列がNUMBERの場合、'NULL'は-1とかに置き換えてください。
なな
ベテラン
会議室デビュー日: 2003/09/18
投稿数: 79
投稿日時: 2003-10-15 10:52
Jittaさん返答ありがとうございました。

引用-------------------------------------------------------------

NVL(受注番号, 'NULL') = NVL(NVL(%JYUCYUCD%, 受注番号), 'NULL')

-----------------------------------------------------------------

で実行したところデータが取得できました!!
でもこれだとレスポンスはどうなるんでしょうか??
もしこのような置換文字列が複数存在し、全てに上記の処理を組み込んでいったら
やはり遅くなってしまうのでしょうか?
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2003-10-15 11:53
引用:

ななさんの書き込み (2003-10-15 10:52) より:

でもこれだとレスポンスはどうなるんでしょうか??
もしこのような置換文字列が複数存在し、全てに上記の処理を組み込んでいったら
やはり遅くなってしまうのでしょうか?


 SQL*PLUS上であれば、「SET TIMING ON」で、実行したSQL文にかかった時間(おそらく、表示のための時間も含まれる)が表示されるので、思いつく限りの比較文と比較してみては如何でしょうか。

 これ以上は.NETから離れているので、「RDB研究館」ででも。
ぴで
大ベテラン
会議室デビュー日: 2002/10/10
投稿数: 123
お住まい・勤務地: 東京
投稿日時: 2003-10-15 12:18
↑Jittaさん、投稿数がフィーバーですね。
引用:
でもこれだとレスポンスはどうなるんでしょうか??
もしこのような置換文字列が複数存在し、全てに上記の処理を組み込んでいったら
やはり遅くなってしまうのでしょうか?

SQLをどのように組んでいるのか分かりませんが、
普通、NULLも含めて全件取得するならWHERE句には条件つけませんよね。
"受注番号"カラムにはNULLを含んでいてもインデックス作成できますから
受注番号を指定した時は高速になりますけど。
Jittaさんも言っているように"受注番号"にはNULLが入っていてもいいんですかね?
データをロードする時にNULLが入らないようにしてやれば、簡単になると思いますけど。
なな
ベテラン
会議室デビュー日: 2003/09/18
投稿数: 79
投稿日時: 2003-10-17 09:46
Jittaさん、ぴでさん返答ありがとうございました。
受注番号というのはあくまでたとえであってデーターがIS NOT NULLのものもあれば
IS NULLのものもあります。
たしかにIS NULLであればNVLを使うこともありませんし、
IS NOT NULLであればWHERE句の条件に入れないほうが高速になりますね。
言葉足らずで申し訳ありません。
データがIS NOT NULLのものに関しては
JittaさんにアドバイスしていただいたNVLの方法で対処していこうと思います。
みなさん、本当にありがとうございました。

スキルアップ/キャリアアップ(JOB@IT)