DOBON.NET DOBON.NETプログラミング掲示板過去ログ

SQLでNULL以外を計算

環境/言語:[XP,SQLServer]
分類:[.NET]

大変お世話になっております。
SQLのSELECTである項目とある項目を加算したいと思っております。
NULLをSELECTから省くのではなく、NULLもSELECTしつつ、数値が入っている箇所のみを計算したいのですが、行き詰りました。
ISNULL()でNULLは0にはしない方向です。
ご教授下さいませ。
  • 題名: Re[1]: SQLでNULL以外を計算
  • 著者: およよ
  • 日時: 2009/07/23 13:58:54
  • ID: 25035
  • この記事の返信元:
  • この記事への返信:
    • (なし)
  • ツリーを表示
■No25034に返信(SQL初心者さんの記事)
> 大変お世話になっております。
> SQLのSELECTである項目とある項目を加算したいと思っております。
> NULLをSELECTから省くのではなく、NULLもSELECTしつつ、数値が入っている箇所のみを計算したいのですが、行き詰りました。
> ISNULL()でNULLは0にはしない方向です。
> ご教授下さいませ。

.NETとしてるが内容はSQLじゃないか?
掲示板が違う。
  • 題名: Re[1]: SQLでNULL以外を計算
  • 著者: るしぇ
  • 日時: 2009/07/23 14:53:46
  • ID: 25037
  • この記事の返信元:
  • この記事への返信:
    • (なし)
  • ツリーを表示
■No25034に返信(SQL初心者さんの記事)
まぁ、もともとSQLは言語体系からVB系とは全く異なるので
このサイトで扱ってる内容とは分野が違うと言えます。
SQLのみの質問をするのであれば、データベースを扱った
サイトへ移動すべきでしょうね。

で、肝心の質問内容に関しては、質問内容が分かりませんでした。
> NULLは0にはしない方向
で NULL を含んだ演算は一般的には NULL になります。
> 数値が入っている箇所のみを計算したい
これは NULL を含まない結果です。

そもそも、SQLの集約関数で数値が入っている箇所のみを計算
するなら、NULLをSELECTから省くか、NULLを0にしても結果は
同じではないですか?何がしたいのかが分かりません。

どんな状況で、どんな技術で(SQLのみか、検索結果をVBで処理
したいのか)どういったデータを使って、どういう結果を求めて
いるのかが説明されていないので、回答できないです。
> ISNULL()でNULLは0にはしない方向です。

ISNULL はパフォーマンスがよくないので、
サーバーからデータをいったん全部取ってきてから
クライアントで処理するのは、たまに聞く話です。

データが NULL かどうかは DBNull.Value.Equals で判定できます。

if (DBNull.Value.Equals(row("cnt"))) { ・・・ }

DOBON.NET | プログラミング道 | プログラミング掲示板