2009-09-07 18 views
18

Estoy ejecutando SQL que necesita redondear el valor al número entero más cercano.Redondee el valor al número entero más cercano en SQL ACTUALIZACIÓN

Lo que necesito es 45.01 vueltas hasta 46. También 45.49 vueltas a 46. Y 45.99 vueltas hasta 46, también. Quiero todo en un dígito entero.

¿Cómo logro esto en una declaración UPDATE como la siguiente?

Update product SET price=Round 

Respuesta

23

Se puede usar la función ceil, al menos en MySQL; esta parte del código SQL:

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

obtendrá "46" cada vez.

Para su actualización, por lo que, yo diría:

Update product SET price = ceil(45.01) 


Por cierto: En MySQL, ceil es un alias para ceiling; no está seguro acerca de otros sistemas de base de datos, por lo que puede que tenga que utilizar uno o el otro, dependiendo de la base de datos que está utilizando ...


Citando la documentación:

CEILING(X)

devoluciones el valor entero más pequeño no menos de X.

Y el ejemplo dado:

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

Esto depende del servidor de base de datos, pero a menudo se llama algo así como CEIL o CEILING. Por ejemplo, en MySQL ...

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

A continuación, puede hacer UPDATE PRODUCT SET price=CEIL(some_other_field);

+0

¡Bienvenido a stackoverflow! Cualquier espacio sangrado de cuatro espacios tiene el formato de código, puede usar el botón con dígitos binarios para hacerlo en el editor. Espero que no te importe que arregle tu respuesta para hacer esto. –

3

Si desea redondear a continuación, utilizar la función de ronda. Usa la función de techo cuando quieras obtener el entero más pequeño que sea más grande que tu argumento.

Por ejemplo: seleccione redonda (843.4923423423,0) de la doble le da 843 y

seleccione redonda (843.6923423423,0) de doble le da 844

+0

¿Qué sucede si solo quiere redondear al centavo más cercano? Si el impuesto a pagar es de $ 13.052, necesito redondearlo hasta $ 13.053. Podría usar ceiling(), pero primero tendría que multiplicar por 100, luego dividir por 100. Parece cojo. – datagod

4

para techo MS SQL (su número) lo redondeará. FLOOR (su número) lo redondeará hacia abajo

3

Techo es el comando que desea utilizar.

A diferencia de Round, Techo solo toma un parámetro (el valor que desea redondear), por lo tanto, si desea redondear a un lugar decimal, primero deberá multiplicar el número por tantos lugares decimales y dividir después.

Ejemplo.

Quiero redondear 1.2345 a 2 decimales.

CEILING(1.2345*100)/100 AS Cost 
Cuestiones relacionadas