• ベストアンサー

NULLを含む列の足し算

NULLを含むA列、B列の合計を取得する方法を教えてください。 列の値がNULLだった場合は0として扱い、 列A 列B 合計 NULL 100 100 100 20 120 50 NULL 50 としたいのですが、 単純に SELECT A+B FROM XXX とすると 列A 列B 合計 NULL 100 NULL 100 20 120 50 NULL NULL となります。 NULL=0として扱う方法はないものでしょうか? 宜しくお願いします。

  • MySQL
  • 回答数2
  • ありがとう数0

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

  • ベストアンサー
回答No.2

RDBMSは、MySQLなのでしょうか? 多くのRDBMSで、coalesce関数が実装されています。 coalesce関数は、引数の並びの中で、最初のnullでない値を採用します。 select coalesce(A,0)+coalesce(B,0) from XXX とすればいいと思います。

その他の回答 (1)

  • shimix
  • ベストアンサー率54% (865/1590)
回答No.1

四則演算にnullが混じったときの扱いはマニュアルに記述があったハズですね。nullを0として扱いたければこんな感じでは? select (case when column-A is null then 0 else column-A end)+(case when column-B is null then 0 else column-B end) as goukei from ~~ 「not null default 0」とかで列を定義しておいた方が手っ取り早いと思います。

関連するQ&A

  • SQLServer7.0で、SELECT文で列を抽出する ※Nullと0の条件について

    SQLServer7.0で、SELECT文で列を抽出する際なんですが、 列A 列B --------- 1  Null 2  Null 3  1 ↑のテーブルから、列Aの1、2だけを抽出するSELECT文を SELECT * FROM XXX WHERE 列B <> 1 と作成したのですが、うまく動作しません(汗) データが一件も取れないのです。(列B:tinyint型、Null許容) テーブル内のデータをNull→0にして、同SELECT文で抽出すればうまくいったのですが。。 Nullデータを、<>XX という条件で取得することはできないんですかねえ・・・。 それとも、テーブルの設定か、条件の記述方法がまずいんでしょうか。 どなたか、ご存知あればアドバイスをお願いします。

  • SELECT文で足し算をした場合、NULL値なら0で、結果を取得する方法

    SELECT文で足し算をした場合、NULL値なら0で、 結果を取得する方法を教えて下さい。 select test1 + test2 from testdb; とした文を以下のようにしてみたのですが、 NULL値が0で表示できませんでした。 select COALESCE(( test1 + test2 ),0) from testdb; このような足し算で、初期値設定していなくて、 ここでのみ、表示させる方法を教えて下さい。

  • is null のandについて(日付型)

    SQLのSELECTで困っています。 プロシージャに引数を渡してSELECTしようと考えています。 複数の日付(datetime)型の引数をand条件で結びたいです。 検索したくない場合はnullを渡す。 例) select A,B,C from XXX where A = '1' and (B = 引数 or 引数 is null) and (C = 引数 or 引数 is null) and (D = 引数 or 引数 is null) ===== B,C,D はdatetimeです。 この形ですと、B,C,D全ての引数に日付が入っていれば取得できる のですが一箇所でも引数に何もセットしないと値0件で帰ってきて しまいます。 せっかく(is null)を使用しているのに意味がありません。 良いお知恵は無いでしょうか。 よろしくお願いします。

  • NULL行の取得について

    教えてください。 Aはトランザクションテーブルです。 A 列1 列2 1 1 2 NULL 3 2 Bは種別テーブルです。 B 列1 列2 列3 aaa 1 あああ1 aaa 2 あああ2 aaa 3 あああ3 select A.列1 B.列3 from INNER JOIN B ON ( (A.列2 = B.列2 or A.列2 is null) and B.列1 = 'aaa') 上記のSQLを実行すると、 A.列1が2のような、列2がNULLだと、 1 あああ1 2 あああ1 2 あああ2 2 あああ3 3 あああ2 となってしまいます。 望む形としては、 1 あああ1 2 null 3 あああ2 としたいのですが。。。 何が悪いか、教えていただけませんでしょうか。 お願いします。

  • NULLを含む文字列の結合で困っています。

    いつもお世話になっています。 VB.NET2003+Access2000環境です。 まず前提として、このデータベースにはユニークなフィールドがありません。(残念ながらこちらの都合では変更することはできません) 従って今まではAccessのクエリウイザードを使って文字列を結合(フィールドを結合)して、ユニークなキーを作っていました。 これを今回、VB.NETで動いているアプリの中にボタンを作り、そこからcsvファイルにエクスポートさせるような仕掛けを作ろうとしました。 ところが、あるフィールドがデータが存在したりNULLであったりするため、結合するとNULLになるデータが出現してきます。 (Accessでは結合時、NULLは無視されていたようで影響はありませんでした) これでは検索して絞り込むキーには出来ず、Accessと同じ結果が得られません。 SQL文では(というかデータアダプターに読み込ませるクエリデザイナ作成時に)どういう風に記述すればNULLがあっても区別出来るようになるのでしょうか? 簡単に言えば フィールドA と フィールドB ともにテキストタイプのデータで、BのみNULLもあり得る場合、  select a, b, a+b as tempAB from tableC というSQL文を実行した結果、tempAB が NULL だけにならない方法をご教示ください。 SELECT CASE when~end などをいろいろ試してみましたがダメでした。 よろしくお願いいたします。

  • Access SQLでnull値のOrderby

    お世話になります、 AccessのSQLについて教えてください。 例えば打率をSQLの中で計算させたとします。その値で Order by して表示させたいのですが、計算結果がnull (打席が0の人)は分母が0になってしまい値が存在しない (null)ですよね、その場合にOrder byを行うとSQLでエラーになってしまいます。 このような場合皆様ならどのように回避されるでしょうか? select B.daritu From (select hit/dasu As daritu From A ) As B Order by B.daritu

  • NULL値を含むソート

    MySQL4.0.20を使っています。 以下のようなデータをソートすると NULLが先に表示されます。 これをNULLを最後にして、数値のソートをかけたいです。何か解決策はありますか?2回に分ける方法しかないのでしょうか? nullと非null ◆元データ A --- 5 NULL 2 NULL 3 1 select A from xxx order by A asc; ●望まない結果 A --- NULL NULL 1 2 3 5 ●望む結果 A --- 1 2 3 5 NULL NULL ※話は変わりますが、4.1で日本語EUCの文字化けバグは直っているのでしょうか?

    • ベストアンサー
    • MySQL
  • Select文で2つのフィールドを加算した結果を取得したい

    Select文で2つのフィールドを加算した結果を取得したいと思います。しかし2つのフィールドのうち1つがNullの値だと残りのフィールドに値が入っていても空白(NULL?)で返ります。 [例]********************************************** フィールドA:Null フィールドB:300 SELECT フィールドA+フィールドB FROM テーブルA <Selectされた結果> 空白(何も表示されない。Null?) [例]********************************************** どのようにすれば、Nullでない値だけ取得できるでしょうか。

  • AccessにおいてフィールドがNULLの値を0に変換するには

    下記のようなSQLで件数を取得したいと考えています。 テーブルBの件数がNULLの場合、差がNULLになってしまいます。 このような場合、差を0にしたいです。 どのように修正したらよいでしょうか。 SELECT A.ID, (A.件数-B.件数) AS 差 FROM A LEFT JOIN B ON A.ID = B.ID;

  • [ASP+SQLserver]空白フィールドのWHEREは?

    こんにちわ。 ASPとSQLサーバで簡単なWebを作っています。 まず、以下のようなデータがあるとします。 (列名) 列A,列B,列C (データ)aaaa,NULL,NULL      bbbb,1111,NULL ※NULLは文字列ではなくNULLです。 そこでNULLであるレコードを取得したいので次のようなクエリで実行してみました。 SELECT * FROM sample WHERE(列B='') ORDER BY 列A しかし、あえなく敗北・・・。 また、NULLでないレコードを取得するために、 SELECT * FROM sample WHERE(列B<>'') AND(列C<>'') ORDER BY 列A しかし、こちらもあえなく敗北・・・。 こういうケースはどのようなクエリでやればいいのでしょうか? お手数をお掛けいたしますが宜しくお願いいたします。