Maison >base de données >tutoriel mysql >Pourquoi la division entière dans SQL renvoie-t-elle 0 au lieu d'une valeur décimale ?

Pourquoi la division entière dans SQL renvoie-t-elle 0 au lieu d'une valeur décimale ?

Linda Hamilton
Linda Hamiltonoriginal
2025-01-20 17:26:10638parcourir

Why Does Integer Division in SQL Return 0 Instead of a Decimal Value?

Comprendre pourquoi la division entière SQL renvoie zéro

Les résultats nuls inattendus des opérations de division SQL peuvent prêter à confusion. Cet article traite d'une situation dans laquelle la division de deux variables numériques (@set1 et @set2) produit 0 au lieu du 0,073667712 attendu.

Le problème vient des types de données des variables. Les variables SQL sont généralement des entiers ou des chaînes. Lorsque @set1 (47) et @set2 (638) sont traités comme des nombres entiers, une division entière se produit, ce qui donne 0. Pour obtenir le résultat décimal correct, convertissez explicitement ces variables en nombres à virgule flottante avant le calcul.

La solution utilise la fonction CAST pour convertir les variables en flottants :

<code class="language-sql">SET @weight = CAST(@set1 AS FLOAT) / CAST(@set2 AS FLOAT);</code>

La conversion de @set1 et @set2 comme FLOAT garantit une division en virgule flottante, donnant la valeur décimale précise de 0,073667712. Ce simple changement garantit le résultat mathématique correct.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn