- ベストアンサー
特定のフィールドにデータが入ってる件数を調べたい
ageというフィールドにデータが入っている件数を調べたいのですが、どのようなsql文を書けばいいでしょうか。 ageフィールドのNULLは「いいえ」、デフォルト値は「空欄」です。 $sql = "SELECT COUNT(*) AS cnt FROM table where 'age' is not null ;"; この文ではうまくいきませんでした。ageフィールドのデフォルト値をNULLにすればいいのでしょうか?
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
同じ人でしたか. では、こちらに・・・ ところで、'age'という記述がありましたが、これだとageという文字列になりますね。せめて age is not null では --- 空欄というのは、デフォルトを指定しなかったという意味でしょうか? NOT NULLを指定した場合、デフォルトを用いた挿入は普通はできません。INSERT時に値の指定を求められます。 空文字列が入っているなら、 SELECT COUNT(*) FROM table WHERE age <> ""; NULLが入っているなら SELECT COUNT(age) FROM table; 空欄もはずすなら SELECT COUNT(age) FROM table WHERE age <> ""; SELECT COUNT(*) FROM table WHERE age <> ""; でできます。 COUNTに式を指定すると、NULLでないものだけを数えます。 age <> "" は、ageがnullの時、UNKNOWNになってWHEREではじかれますので、*をカウントしても、ageをカウントしても結果は同じです。 なおSHOW CREATE TABLEで詳細なテーブルの情報を取得できます。もし、デフォルトが設定されていれば、確認できます。
その他の回答 (1)
- chukenkenkou
- ベストアンサー率43% (833/1926)
マルチポストは、規約違反ですよ? >ageというフィールドにデータが入っている件数を調べたい >ageフィールドのNULLは「いいえ」、デフォルト値は「空欄」です。 空欄とは、具体的にどんな値をDBに格納するのですか? 「長さ=0の文字」でしょうか? 結局、検索したいのは、「nullでない行数」ですか? それとも、「nullでも『空欄』でもない行数」ですか? >$sql = "SELECT COUNT(*) AS cnt FROM table where 'age' is not null ;"; >この文ではうまくいきませんでした うまく行かないとは、具体的にどういう事象になるのか説明するようにしてください。 $sqlに代入するSELECT文の最後に、「;」を入れているのが問題なのでは?
お礼
>マルチポストは、規約違反ですよ? すいません。昨夜に投稿したのですが、質問ページが真っ白になってしまってちゃんと表示されなかったため、他のアカウントで再度同じ質問をした次第です。 2回目も同様に表示されなかったので諦めていたら、現在はちゃんと表示されているようで・・・ 申し訳ありませんでした。 「nullでも『空欄』でもない行数」を検索したいと思っています。 うまく行かないとは、全行が抽出されてしまうという意味でした。 > $sqlに代入するSELECT文の最後に、「;」を入れているのが問題なのでは? それではないようです。
お礼
色々なパターンを教えて頂きましてありがとうございました。 助かります。