• ベストアンサー

nullと同じく空白をCountしない方法は?

お世話になります。 mysql 超初心者です。 Count( a) AS b FROM tblで aをCountするのはnull値以外で空白もCountしてしまいます。 これを空白もnull値と同じにCountしない方法はどうするのでしょうか? または空白のみをCountする書き方等あるのでしょうか? 色々調べてもググってもよくわかりませんでした。 初期値のnull値が一回書き込まれたデーターを削除すると 空白になってCount( a) でCountされて困っています。 初心者なのでなるべく具体的な回答をお待ちしています。 どうかよろしくお願いいたします。

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

  • ベストアンサー
  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.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でいけます

chikomaru
質問者

お礼

回答大変ありがとう御座います。 >空白ってなに? とご指摘頂いたのですが、mysql の初期値をnullにすると削除されたデーターには空白が残るのではないのでしょうか?うーん。。すいません。 わかりませんでした。 それはうやむやなのですが、 count(if(data=0,null,data) ) をcount(if(data='',null,data) ) としたら空白もnullとしてカウントされなくなったようで、 うまくできたようです。ifでできるとは初めて知りました! ご回答大変勉強になり、助かりました! 本当にありがとう御座います。 また何かありましたら是非よろしくお願い致します。

関連するQ&A