28% de descuento del curso en SQL Server

Estrada Web Group Estrada Web Group
Convertir valor
Estrada Web Group
Estrada Web Group
Estrada Web Group Estrada Web Group
Calificar:
03 October SQL

Cómo convertir un valor a otro tipo de dato con la función CAST de SQL Server

Resumen: en este tutorial, aprenderás a usar la función CAST() de SQL Server para convertir un valor o una expresión de un tipo a otro.

Introducción a la función CAST() de SQL Server

Veamos la siguiente consulta:

SELECT 1 + '1' AS result;

Devuelve 2 como un número:

result
-----------
2

(1 row affected)

En esta instrucción, SQL Server convierte implícitamente la cadena de caracteres '1' en el número 1.

Cuando usas dos valores con diferentes tipos de datos, SQL Server intentará convertir el tipo de datos inferior al superior antes de que pueda procesar el cálculo. Esto se conoce como conversión implícita en SQL Server.

A diferencia de las conversiones implícitas, tenemos conversiones explícitas en las que se llama a la función CAST() para convertir explícitamente un valor de un tipo a otro:

SELECT 1 + CAST(1 AS INT) result;

La sintaxis de la función CAST() es la siguiente:

CAST ( expression AS target_type [ ( length ) ] )  

En esta sintaxis:

  • expression puede ser un valor literal o una expresión válida de cualquier tipo que se convertirá.
  • target_type es el tipo de datos de destino al que desea convertir la expresión. Incluye INT, BIT, SQL_VARIANT, etc. Ten en cuenta que no puede ser un tipo de datos de alias.
  • length es un entero opcional que especifica la longitud del tipo de destino. La longitud predeterminada es 30.

La función CAST() devuelve la expresión convertida al tipo de datos de destino.

Ejemplos de la función CAST() de SQL Server

Veamos algunos ejemplos del uso de la función CAST().

A) Usando la función CAST() para convertir un decimal a un entero

Este ejemplo utiliza la función CAST() para convertir el número decimal 5.95 en un número entero:

SELECT CAST(5.95 AS INT) result;

Resultado:

result
-----------
5

(1 row affected)

B) Usando la función CAST() para convertir un decimal a otro decimal con diferente longitud

El siguiente ejemplo usa la función CAST() para convertir el número decimal 5.95 a otro número decimal con escala cero:

SELECT CAST(5.95 AS DEC(3,0)) result;

Resultado:

result
-------
6

Cuando conviertes un valor a otro tipo de datos con diferente tamaño, SQL Server devolverá un resultado truncado o un valor redondeado según las siguientes reglas:

Del tipo de datos Al tipo de datos Comportamiento
numeric numeric Round
numeric int Truncate
numeric money Round
money int Round
money numeric Round
float int Truncate
float numeric Round
float datetime Round
datetime int Round

C) Uso de la función CAST() para convertir una cadena en un valor de fecha y hora

Este ejemplo usa la función CAST() para convertir la cadena '2019-03-14' en una fecha y hora:

SELECT
    CAST('2019-03-14' AS DATETIME) result;

Resultado:

result
-----------------------
2019-03-14 00:00:00.000

(1 row affected)

D) Usar la función CAST() con operadores aritméticos

Usaremos las tablas sales.orders y sales.order_items de la base de datos de ejemplo para la demostración:


CAST de SQL Server

La siguiente declaración usa la función CAST() para convertir las ventas mensuales en 2017 a valores enteros.

SELECT
    MONTH(order_date) month,
    CAST(SUM(quantity * list_price * (1 - discount)) AS INT) amount
FROM sales.orders o
    INNER JOIN sales.order_items i ON o.order_id = i.order_id
WHERE
    YEAR(order_date) = 2017
GROUP BY
    MONTH(order_date)
ORDER BY
    month;

La siguiente imagen muestra la salida:

función cast de sql server

En este tutorial, has aprendido a usar la función CAST() de SQL Server para convertir un valor de un tipo a otro.

 

Compartir:

Cargando...
Descarga el código fuente

Obten el código del sistema de gestión de proyectos.

Shape