J'exécute SQL qui doit arrondir la valeur au nombre entier le plus proche.
Ce dont j'ai besoin, c'est 45,01 arrondis à 46. Aussi 45,49 arrondis à 46. Et 45,99 arrondis à 46 aussi. Je veux que tout soit à un chiffre entier.
Comment puis-je y parvenir dans une instruction UPDATE comme la suivante?
Update product SET price=Round
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, je dirais donc:
Update product SET price = ceil(45.01)
BTW: Sur MySQL, ceil
est un alias pour ceiling
; Je ne suis pas sûr des autres systèmes DB, vous devrez donc peut-être utiliser l'un ou l'autre, selon la base de données que vous utilisez ...
Citant la documentation:
CEILING(X)
Renvoie la plus petite valeur entière non inférieure à X.
Et l'exemple donné:
mysql> SELECT CEILING(1.23);
-> 2
mysql> SELECT CEILING(-1.23);
-> -1
Essayez plafond ...
SELECT Ceiling(45.01), Ceiling(45.49), Ceiling(45.99)
Ceiling est la commande que vous souhaitez utiliser.
Contrairement à Arrondir, 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 le diviser ensuite.
Exemple.
Je veux arrondir 1,2345 à 2 décimales.
CEILING(1.2345*100)/100 AS Cost
Pour MS SQL CEILING (votre numéro) l'arrondira. FLOOR (votre numéro) l'arrondira
Si vous souhaitez arrondir, utilisez la fonction d'arrondi. Utilisez la fonction de plafond lorsque vous souhaitez obtenir le plus petit entier juste supérieur à votre argument.
Par exemple: sélectionnez ronde (843.4923423423,0) de double vous donne 843 et
sélectionnez ronde (843.6923423423,0) de double vous donne 844
Cela dépend du serveur de base de données, mais il est souvent appelé quelque chose comme CEIL
ou CEILING
. Par exemple, dans MySQL ...
mysql> select ceil(10.5);
+------------+
| ceil(10.5) |
+------------+
| 11 |
+------------+
Vous pouvez alors faire UPDATE PRODUCT SET price=CEIL(some_other_field);
Combinez le rond et le plafond pour obtenir un bon arrondi.
select ceiling(round(984.375000), 0)) => 984
tandis que
select round(984.375000, 0) => 984.000000
et
select ceil (984.375000) => 985