ホームページ >データベース >mysql チュートリアル >SQL の整数除算が 10 進数値ではなく 0 を返すのはなぜですか?
SQL 整数除算がゼロを返す理由を理解する
SQL 除算演算からの予期しない結果がゼロになると、混乱を招く可能性があります。この記事では、2 つの数値変数 (@set1 と @set2) を除算すると、予想される 0.073667712 ではなく 0 が生成される状況について説明します。
問題は変数のデータ型に起因します。 SQL 変数は通常、整数または文字列です。 @set1 (47) と @set2 (638) が整数として扱われる場合、整数の除算が発生し、結果は 0 になります。正しい 10 進数の結果を取得するには、計算前にこれらの変数を浮動小数点数に明示的にキャストします。
このソリューションでは、CAST
関数を使用して変数を浮動小数点数に変換します。
<code class="language-sql">SET @weight = CAST(@set1 AS FLOAT) / CAST(@set2 AS FLOAT);</code>
@set1 と @set2 を FLOAT
としてキャストすると、確実に浮動小数点除算が行われ、正確な 10 進数値 0.073667712 が得られます。この単純な変更により、正しい数学的結果が保証されます。
以上がSQL の整数除算が 10 進数値ではなく 0 を返すのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。