![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67)
人口($pop)と面積($area)から人口密度を計算する際、
MySQLから取り出したデータに、ゼロやNULLが混在しているので、
(1) 分母や分子がゼロの場合
(2) 分母や分子がNULLの場合
は、割り算しないようにしたいのですが、
単純に以下のようにすると、
(1) はN/Aと表示されますが、(2)ではN/Aが表示されません。
NULLもはねるようにするにはどのように記述したらよいでしょうか。
if ($pop > 0 and $area > 0){
$density = $pop / $area ;
} else {
$density = "N/A";
}
No.2ベストアンサー
- 回答日時:
「===」という演算子で、値と同時に型も比較してくれますので、
$pop = null;
$area = 50;
if($pop !== null and $area !== null and $pop > 0 and $area > 0)
{
}
else
{
}
としてあげれば、希望の動作は満たすと思います。
ただ、このやり方が正解なのかどうかは自分にはわかりません。。。
参考URL:http://jp.php.net/manual/ja/language.operators.c …
御礼遅くなって失礼しました。
(作業がここまで到達せず。。。)
まさにご回答のような方法をお尋ねした次第ですが
残念ながら希望通りにはなりませんでした。
別の何かが誤っていたのでしょうかね・・
とにかく、貴重なアドバイスありがとうございました。
No.3
- 回答日時:
NULLの検査にはis_nullが使えます
御礼遅くなって失礼しました。
(作業がここまで到達せず。。。)
貴重なアドバイスありがとうございました。
is_nullについて調べてみます。
No.1
- 回答日時:
MySQLに発行するSELECT文で、NULLだったら、0を返すようにするか、$density をSQLで計算することをお勧めします。
SELECT IFNULL(area, 0) AS area, IFNULL(pop, 0) AS pop ...
みたいな感じですかね。
または、
SELECT CASE WHEN area IS NULL OR pop IS NULL OR area = 0 OR pop = 0 THEN 'N/A' ELSE pop/area END AS density ...
標準SQLですと、CASE式の返す値は型が同じじゃないといけないんですが・・・
MySQLだと通っちゃいます。
御礼遅くなって失礼しました。
(作業がここまで到達せず。。。)
今回は諸事情で使うことができませんが、
SQL側でという発想はありませんでした。
参考にさせていただきます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- PostgreSQL DBFluteについて質問です。 環境:PostgreSQL java8 前提:webアプリケーショ 1 2022/07/07 00:49
- その他(コンピューター・テクノロジー) 【Tableau Desktop】文字列から8桁の数字を日付型(yyyyMMdd)として取得 1 2023/07/31 10:17
- C言語・C++・C# c言語の問題の説明、各所ごとに 5 2023/07/26 11:03
- C言語・C++・C# c言語の問題です 3 2023/01/10 16:15
- C言語・C++・C# バイナリファイルをコピーするのにかかる時間を測りたいのですが実行するとFatel error:gli 2 2022/11/03 01:10
- Perl 画像が表示でnull; this.src 1 2022/04/19 11:31
- 大学・短大 C言語線形リストの問題です 3 2022/12/22 00:45
- PHP PHPでCSVを出力するさいに、ループの中で前の行の値を変更したい 3 2022/10/27 17:44
- PHP ここでの ②if($su_d<>"")の比較演算子 を使う理由は 1 2022/03/26 02:33
- PHP PHP MySql ページング 2 2022/09/20 06:38
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
双方向リストのバブルソートに...
-
InvokeMemberメソッドとは何を...
-
2÷3などの余りについて
-
「Aに対するBの割合」と「Aに対...
-
信頼区間の1.96や1.65ってどこ...
-
EXCELの分散分析表のP-値が....
-
fflush(stdin)の使い方とprintf...
-
プログラミングの問題です 「金...
-
ラップ関数とはどんなものですか?
-
O(n log n)について2
-
課題なんですが・・・
-
分数を表示するプログラム(長...
-
改行について 1行に何個かづ...
-
比較回数と交換回数表示について
-
計算に誤差が出る?
-
大学数学の問題です。 加法群Z/...
-
Enterキーを押されたら次の処理...
-
「n進法から10進法への変換」
-
空白を含んだ文字列がうまく格...
-
C言語で、「自然数nを入力し、n...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
構造体のリスト削除
-
InvokeMemberメソッドとは何を...
-
ばばぬきプログラムについて
-
C言語 リスト
-
C言語 dequeue
-
C# ref引数のnull判定
-
C言語
-
双方向リストのバブルソートに...
-
API 録音 MCI
-
ご教授ください。Segmentation ...
-
C♯ 2段構造のcontextMenuStrip?
-
リスト構造
-
コールバック関数はnullになら...
-
連結リストをソート
-
今度はdoubly linked listの問...
-
C言語 二分木探索
-
「Nz」は何て読むのでしょうか?
-
バブルソートを使って文字列を...
-
【C++】ストリームオブジェクト...
-
別formの多重起動防止
おすすめ情報