2009-09-07 5 views
18

Je cours SQL nécessitant arrondir la valeur au nombre entier le plus proche. Ce dont j'ai besoin est 45.01 arrondit jusqu'à 46. Aussi 45.49 arrondit à 46. Et 45.99 arrondit jusqu'à 46, aussi. Je veux tout en haut un chiffre entier.Arrondir la valeur au nombre entier le plus proche dans SQL MISE À JOUR

Comment j'obtiens ceci dans une instruction UPDATE comme ceci?

Update product SET price=Round 

Répondre

23

Vous pouvez utiliser la fonction ceil, au moins sur MySQL; cette partie du code SQL:

select ceil(45.01), ceil(45.49), ceil(45.99); 

vous obtiendrez "46" chaque fois.

Pour votre mise à jour, donc, je dirais:

Update product SET price = ceil(45.01) 


BTW: Sur MySQL, ceil est un alias à ceiling; pas sûr d'autres systèmes DB, de sorte que vous pourriez avoir à utiliser l'un ou l'autre, selon la DB que vous utilisez ...


Citant la documentation:

CEILING(X)

Retours la plus petite valeur entière non moins de X.

Et l'exemple donné:

mysql> SELECT CEILING(1.23); 
     -> 2 
mysql> SELECT CEILING(-1.23); 
     -> -1 
2

Cela dépend du serveur de base de données, mais il est souvent appelé quelque chose comme CEIL ou CEILING. Par exemple, MySQL ...

mysql> select ceil(10.5); 
+------------+ 
| ceil(10.5) | 
+------------+ 
|   11 | 
+------------+ 

Vous pouvez alors faire UPDATE PRODUCT SET price=CEIL(some_other_field);

+0

bienvenue à stackoverflow! Tout ce qui est en retrait de quatre espaces est formaté en code, vous pouvez utiliser le bouton avec des chiffres binaires pour le faire dans l'éditeur. J'espère que ça ne vous dérange pas que je répare votre réponse pour le faire! –

3

Si vous voulez arrondir puis utilisez la fonction tour. Utilisez la fonction plafond lorsque vous voulez obtenir le plus petit entier juste supérieur à votre argument.

Ex: rond select (843.4923423423,0) de double vous donne 843 et

tour select (843.6923423423,0) à partir double vous donne 844

+0

Et si vous voulez simplement arrondir au centime le plus proche? Si la taxe due est de 13,052 $, je dois arrondir ce montant à 13,053 $. Je pourrais employer le plafond(), mais je devrais d'abord multiplier par 100, puis diviser par 100. Semble boiteux. – datagod

4

Pour MS SQL PLAFOND (votre numéro) l'arrondira. FLOOR (votre numéro) arrondira vers le bas

3

Plafond est la commande que vous souhaitez utiliser.

Contrairement à Round, Plafond ne prend qu'un paramètre (la valeur que vous souhaitez arrondir), donc si vous voulez arrondir à une décimale, vous devrez d'abord multiplier le nombre par autant de décimales et diviser ensuite.

Exemple.

Je veux arrondir 1,2345 à 2 décimales.

CEILING(1.2345*100)/100 AS Cost 
Questions connexes