resto obtener entera ejemplo decimales sql-server-2005

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