sql-server-2005 - obtener - sql module function
DivisiĆ³n entera en el servidor sql (7)
En el primero, obtiene el resultado de dos enteros y luego arroja el resultado como DECIMAL (9,2). En el segundo solo estás dividiendo dos enteros y eso se espera.
Si lanzas uno de los enteros como un decimal ANTES de hacer la división, obtendrás un resultado decimal.
SELECT 151/CAST(6 AS DECIMAL (9,2))
En Microsoft SQL Server 2005, ¿por qué los siguientes comandos producen resultados enteros?
SELECT cast(151/6 AS DECIMAL(9,2))
SELECT 151/6
No es una respuesta directa a tu pregunta. Todavía vale la pena echar un vistazo a los operadores en expresiones si necesita esto en SSRS
/ Divide dos números y devuelve un resultado de coma flotante .
/ Divide dos números y devuelve un resultado entero .
Mod. Devuelve el resto entero de una división.
Por la misma razón, lo harían en c #, Java y otros lenguajes principales.
Entero ''rítmico, el CAST es después de las matemáticas ...
Porque 151 y 6 son números enteros y estás haciendo una división entera, incluso antes del reparto.
Debe asegurarse de que al menos uno de los argumentos sea de tipo flotante:
SELECT 151.0/6
O
SELECT 151/6.0
Prueba esto:
SELECT 1.0*cast(151/6 AS DECIMAL(9,2))
SELECT 1.0*151/6
Sí, eso es comportamiento estándar
hacer
SELECT 151/6.0
o
SELECT 151/(CONVERT(DECIMAL(9,2),6))
o
SELECT 151/(6 * 1.0)
También debe dar un marcador de posición para los lugares decimales
Ejemplo
SELECT 151.000000/6
OR
SELECT 151/6.000000
Ambos producirán
25.16666666