プロが教える店舗&オフィスのセキュリティ対策術

お世話になります。
mysql 超初心者です。

Count( a) AS b FROM tblで
aをCountするのはnull値以外で空白もCountしてしまいます。
これを空白もnull値と同じにCountしない方法はどうするのでしょうか?
または空白のみをCountする書き方等あるのでしょうか?

色々調べてもググってもよくわかりませんでした。
初期値のnull値が一回書き込まれたデーターを削除すると
空白になってCount( a) でCountされて困っています。

初心者なのでなるべく具体的な回答をお待ちしています。
どうかよろしくお願いいたします。

A 回答 (1件)

空白ってなに?とまず突っ込まれる内容ですね


キチンと型指定すれば空白はないとおもいますが

create table hoge(id int not null default 0 primary key,data int null);
insert into hoge value(1,1),(2,3),(3,''),(4,null),(5,null),(6,0);

この場合、空白は0です
そこで拡大解釈して0もカウントしないという命題だとすると
一般的にはsumを使う場合とcountをつかう場合があります

(1)select sum(data is not null and data!=0) from hoge;
→dataがnullじゃないかつdataが0じゃないものをカウントするのにsumをつかいます

(2)select count(if(data=0,null,data) ) from hoge
→dataが0だった場合nullだとみなします、この場合はcountでいけます
    • good
    • 0
この回答へのお礼

回答大変ありがとう御座います。
>空白ってなに?
とご指摘頂いたのですが、mysql の初期値をnullにすると削除されたデーターには空白が残るのではないのでしょうか?うーん。。すいません。
わかりませんでした。

それはうやむやなのですが、
count(if(data=0,null,data) ) をcount(if(data='',null,data) )
としたら空白もnullとしてカウントされなくなったようで、
うまくできたようです。ifでできるとは初めて知りました!
ご回答大変勉強になり、助かりました!
本当にありがとう御座います。
また何かありましたら是非よろしくお願い致します。

お礼日時:2012/11/19 11:07

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

関連するカテゴリからQ&Aを探す