create table test_int
    (
     num bigint
    )

insert into test_int (num)
values (4096);

Mi tarea es calcular 4096/1024/1024 y obtener una respuesta decimal. Ok, int no almacena valores después del punto, entonces:

select CAST (num as decimal)/1024/1024 AS decimal, ROUND ((CAST (num as decimal)/1024/1024),4,1) AS numeric  from test_int

El primero es puro resultado, el segundo es después del redondeo:

decimal         numeric
0.00390625000 0.00390000000

La tarea consiste en eliminar los ceros vacíos después de los valores.

select convert(decimal(25,5), 4096/1024/1024 ,0) 

Devuelve 0,00000.

Entonces, ¿cómo puedo obtener 0,0039 en lugar de 0,00390000000? Gracias de antemano por cualquier tipo de ayuda.

0
Cove 26 ene. 2016 a las 10:45

2 respuestas

La mejor respuesta

Transmita el resultado a FLOAT.

Consulta

SELECT
CAST
(
    CAST(num as decimal)/1024/1024 
    AS FLOAT
) AS decimal, 
CAST
(
    ROUND((CAST (num as decimal)/1024/1024),4,1) 
    AS FLOAT
) AS numeric  
from test_int;

Resultado

+---------------+---------------+
| decimal       |   numeric     |
+---------------+---------------+
| 0.00390625    | 0.0039        |
+---------------+---------------+

Violín de SQL

1
Ullas 29 ene. 2016 a las 09:14

Este funcionará, pero si no me equivoco, solo funcionará para la versión 2008 y superior.

SELECT CONVERT(DOUBLE PRECISION, 0.00390000000)

result: 0.0039
1
japzdivino 26 ene. 2016 a las 08:01