- ベストアンサー
nullと同じく空白をCountしない方法は?
お世話になります。 mysql 超初心者です。 Count( a) AS b FROM tblで aをCountするのはnull値以外で空白もCountしてしまいます。 これを空白もnull値と同じにCountしない方法はどうするのでしょうか? または空白のみをCountする書き方等あるのでしょうか? 色々調べてもググってもよくわかりませんでした。 初期値のnull値が一回書き込まれたデーターを削除すると 空白になってCount( a) でCountされて困っています。 初心者なのでなるべく具体的な回答をお待ちしています。 どうかよろしくお願いいたします。
- みんなの回答 (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でいけます
お礼
回答大変ありがとう御座います。 >空白ってなに? とご指摘頂いたのですが、mysql の初期値をnullにすると削除されたデーターには空白が残るのではないのでしょうか?うーん。。すいません。 わかりませんでした。 それはうやむやなのですが、 count(if(data=0,null,data) ) をcount(if(data='',null,data) ) としたら空白もnullとしてカウントされなくなったようで、 うまくできたようです。ifでできるとは初めて知りました! ご回答大変勉強になり、助かりました! 本当にありがとう御座います。 また何かありましたら是非よろしくお願い致します。