電子書籍の厳選無料作品が豊富!

ageというフィールドにデータが入っている件数を調べたいのですが、どのようなsql文を書けばいいでしょうか。

ageフィールドのNULLは「いいえ」、デフォルト値は「空欄」です。

$sql = "SELECT COUNT(*) AS cnt FROM table where 'age' is not null ;";

この文ではうまくいきませんでした。ageフィールドのデフォルト値をNULLにすればいいのでしょうか?

A 回答 (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で詳細なテーブルの情報を取得できます。もし、デフォルトが設定されていれば、確認できます。
    • good
    • 0
この回答へのお礼

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

お礼日時:2008/05/16 19:08

マルチポストは、規約違反ですよ?



>ageというフィールドにデータが入っている件数を調べたい
>ageフィールドのNULLは「いいえ」、デフォルト値は「空欄」です。

空欄とは、具体的にどんな値をDBに格納するのですか?
「長さ=0の文字」でしょうか?
結局、検索したいのは、「nullでない行数」ですか?
それとも、「nullでも『空欄』でもない行数」ですか?

>$sql = "SELECT COUNT(*) AS cnt FROM table where 'age' is not null ;";
>この文ではうまくいきませんでした

うまく行かないとは、具体的にどういう事象になるのか説明するようにしてください。
$sqlに代入するSELECT文の最後に、「;」を入れているのが問題なのでは?
    • good
    • 0
この回答へのお礼

>マルチポストは、規約違反ですよ?

すいません。昨夜に投稿したのですが、質問ページが真っ白になってしまってちゃんと表示されなかったため、他のアカウントで再度同じ質問をした次第です。

2回目も同様に表示されなかったので諦めていたら、現在はちゃんと表示されているようで・・・ 申し訳ありませんでした。

「nullでも『空欄』でもない行数」を検索したいと思っています。


うまく行かないとは、全行が抽出されてしまうという意味でした。

> $sqlに代入するSELECT文の最後に、「;」を入れているのが問題なのでは?

それではないようです。

お礼日時:2008/05/16 14:01

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

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