• ベストアンサー

特定のフィールドにデータが入ってる件数を調べたい

ageというフィールドにデータが入っている件数を調べたいのですが、どのようなsql文を書けばいいでしょうか。 ageフィールドのNULLは「いいえ」、デフォルト値は「空欄」です。 $sql = "SELECT COUNT(*) AS cnt FROM table where 'age' is not null ;"; この文ではうまくいきませんでした。ageフィールドのデフォルト値をNULLにすればいいのでしょうか?

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

  • ベストアンサー
  • masa6272
  • ベストアンサー率66% (93/140)
回答No.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で詳細なテーブルの情報を取得できます。もし、デフォルトが設定されていれば、確認できます。

gogo8999
質問者

お礼

色々なパターンを教えて頂きましてありがとうございました。 助かります。

その他の回答 (1)

回答No.1

マルチポストは、規約違反ですよ? >ageというフィールドにデータが入っている件数を調べたい >ageフィールドのNULLは「いいえ」、デフォルト値は「空欄」です。 空欄とは、具体的にどんな値をDBに格納するのですか? 「長さ=0の文字」でしょうか? 結局、検索したいのは、「nullでない行数」ですか? それとも、「nullでも『空欄』でもない行数」ですか? >$sql = "SELECT COUNT(*) AS cnt FROM table where 'age' is not null ;"; >この文ではうまくいきませんでした うまく行かないとは、具体的にどういう事象になるのか説明するようにしてください。 $sqlに代入するSELECT文の最後に、「;」を入れているのが問題なのでは?

gogo8999
質問者

お礼

>マルチポストは、規約違反ですよ? すいません。昨夜に投稿したのですが、質問ページが真っ白になってしまってちゃんと表示されなかったため、他のアカウントで再度同じ質問をした次第です。 2回目も同様に表示されなかったので諦めていたら、現在はちゃんと表示されているようで・・・ 申し訳ありませんでした。 「nullでも『空欄』でもない行数」を検索したいと思っています。 うまく行かないとは、全行が抽出されてしまうという意味でした。 > $sqlに代入するSELECT文の最後に、「;」を入れているのが問題なのでは? それではないようです。

関連するQ&A