MySQLのビューは:どのように私は0に計算フィールドのデフォルト値を設定するのですか?

StackOverflow https://stackoverflow.com/questions/1885070

  •  19-09-2019
  •  | 
  •  

質問

私は、ビューのパーセンテージ計算を作成するには、次のステートメントを使用します:

ラウンド(((Surveys.RejectedAsAdvertising / Surveys.Responses)* 100)、0)PercentageAdvertising AS

基本的に、私は応答の合計数で(この場合には、広告と見なさものです)特定の質問に対する回答の数を割ります。

最後に、私は、5件の可能なアンケートの回答のそれぞれの割合を示して列を持っている(「それは宣伝ですか?」「それは退屈ですか?」など。)。

これは完璧に動作しますが、私は微調整したい一つのことがあります。応答タイプ(例えば、広告)が任意の票を持っていない場合は、私の計算フィールドはNULL値を受け取ります。

私のビューを定義するとき、私はデフォルト値の0を指定することができますか?

感謝します。

役に立ちましたか?

解決

あなたはそこでcoalesceを必要としています。これは、最初の非NULLの引数を選択ので、あなたのようなものを必要とします:

coalesce(
    round(
        ((Surveys.RejectedAsAdvertising / Surveys.Responses) * 100)
        ,0)
    ,0)
    AS PercentageAdvertising
ラウンドの結果がNULLの場合、

すると、それはあなたが代わりにゼロになります。

他のヒント

COALESCE には好ましいアプローチであります、そのため、パラメーターがnullの場合の評価を扱うANSI標準的な方法です。ビーイングANSI、同じ構文が必要な場合は、データベース間のポートに簡単にクエリを行う、などのOracle、SQL Serverの、Postgresの、でサポートされています。

COALESCE(round(((Surveys.RejectedAsAdvertising / Surveys.Responses) * 100),0) AS PercentageAdvertising, 0)

IFNULL のですMySQLの特定の構文ます:

IFNULL(round(((Surveys.RejectedAsAdvertising / Surveys.Responses) * 100),0) AS PercentageAdvertising, 0)
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top