web-dev-qa-db-fra.com

Arrondir la valeur au nombre entier le plus proche dans SQL UPDATE

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
18
Skuta

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
25
Pascal MARTIN

Essayez plafond ...

SELECT Ceiling(45.01), Ceiling(45.49), Ceiling(45.99)

http://en.wikipedia.org/wiki/Floor_and_ceiling_functions

14
pjp

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
4
markthewizard1234

Pour MS SQL CEILING (votre numéro) l'arrondira. FLOOR (votre numéro) l'arrondira

4
Gil Allen

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

3
Cshah

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);

2
a1kmm

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
1
Edwin