Les valeurs décimales en SQL pour diviser les résultats
En SQL, j'ai col1
et col2
. Les deux sont des nombres entiers.
Je veux faire comme:
select col1/col2 from tbl1
- Je obtenir le résultat 1
où col1=3
et col2=2
Le résultat que je veux c'est 1.1
J'ai mis round(col1/col2,2)
. Le résultat est toujours 1.
J'ai mis decimal(col1/col2,2)
. La virgule n'est pas construit en fonction.
Comment puis-je faire exactement pour obtenir 1.1?
- est-il 3 divisé par 2 égale à 1,5 ?
- Oui. c'est.. ..
- Quel genre de l'arrondissement vous donne 3/2 = 1.1?
- Il aurait peut-être automatiquement converti en binaire. 🙂
Vous devez vous connecter pour publier un commentaire.
Vous aurez besoin de jeter ou de convertir les valeurs à virgule avant la division. Jetez un oeil à ce
http://msdn.microsoft.com/en-us/library/aa226054.aspx
Par exemple
La première sélection sera la conséquence de ce que vous voyez, tandis que la deuxième sélection aura la bonne réponse
1.500000
Juste une autre approche:
En multipliant par 1.0 transforme un entier en un
floatnumérique(13,1) et donc fonctionne comme un transtypage, mais plus que probablement, il est plus lent que ça.Un peu plus court variation suggéré par Aleksandr Fedorenko dans un commentaire:
L'effet serait essentiellement la même. La seule différence est que la multiplication résultat dans ce cas serait numérique(12,0).
Principal avantage: moins verbeux que les autres approches.
SELECT CAST (col1 as float) /col2 FROM tbl1
Un cast devrait fonctionner. ("Moins est plus".)
De Livres En Ligne:
Il peut y avoir d'autres façons d'obtenir votre résultat souhaité.