Aquí hay tres opciones para convertir un número entero a un valor decimal en SQL Server usando T-SQL.
El CAST()
Función
El CAST()
función convierte una expresión de un tipo de datos a otro:
SELECT CAST(275 AS DECIMAL(5, 2));
Resultado:
275.00
En este ejemplo, convertimos un número entero (275
) a un valor decimal con una precisión de 5
y con 2
lugares decimales.
Decimal y numérico son sinónimos y se pueden usar indistintamente. Por lo tanto, podemos ajustar nuestro ejemplo de la siguiente manera para lograr el mismo resultado:
SELECT CAST(275 AS NUMERIC(5, 2));
Resultado:
275.00
Es importante recordar ajustar la precisión según sea necesario:
SELECT CAST(18301275 AS DECIMAL(10, 2));
Resultado:
18301275.00
Si el argumento de precisión no es lo suficientemente grande, se produce un error:
SELECT CAST(18301275 AS DECIMAL(9, 2));
Resultado:
Msg 8115, Level 16, State 8, Line 1 Arithmetic overflow error converting int to data type numeric.
El CONVERT()
Función
El CONVERT()
función hace lo mismo que CAST()
, excepto con una sintaxis ligeramente diferente:
SELECT CONVERT(DECIMAL(5, 2), 275);
Resultado:
275.00
Usar un operador aritmético
Otra opción es usar un operador aritmético, como un operador de multiplicación:
SELECT 275 * 1.00;
Resultado:
275.00
En este ejemplo, multiplicamos el número entero por 1.00
.
En SQL Server, cada vez que un operador combina expresiones de diferentes tipos de datos, el tipo de datos con menor prioridad se convierte primero en el tipo de datos con mayor prioridad. Luego, la operación devuelve el tipo de datos del argumento con mayor prioridad.
En SQL Server, el decimal tiene mayor prioridad que el entero.
Al multiplicarlo por 1,00, no cambiamos la parte entera. Simplemente lo estamos convirtiendo a decimal y sumando la parte fraccionaria.
Consulte Precedencia de tipos de datos en SQL Server para obtener una lista de tipos de datos en orden de precedencia.