sql >> Base de Datos >  >> RDS >> Sqlserver

Cómo funciona CAST() en SQL Server

En SQL Server, el CAST() La función convierte una expresión de un tipo de datos a otro.

Aquí hay una descripción general rápida de la función con ejemplos.

Sintaxis

La sintaxis es así:

CAST ( expression AS data_type [ ( length ) ] )  

Donde expression es la expresión a convertir, data_type es el nuevo tipo de datos y length es una longitud opcional para el nuevo tipo de datos.

Ejemplo

Aquí hay un ejemplo de conversión de una cadena como decimal:

SELECT CAST('007' AS DECIMAL(5,2));

Resultado:

7.00

Cadena hasta la fecha

Este es un ejemplo de conversión de una cadena a una fecha:

SELECT CAST('09 Feb 2030' AS date);

Resultado:

2030-02-09

En este caso el CAST() La función pudo determinar qué partes de la fecha son cuáles porque proporcioné la fecha en un formato que reconoce.

Pasar un valor que no se puede convertir como una fecha da como resultado un error:

SELECT CAST('Next Xmas' AS date);

Resultado:

Msg 241, Level 16, State 1, Line 1
Conversion failed when converting date and/or time from character string.

Configuración regional

El idioma de la sesión actual puede marcar la diferencia en cómo se interpretan las fechas.

Esto es lo que sucede cuando se usa el idioma británico:

SET LANGUAGE British;
SELECT CAST('09/02/2030' AS date);

Resultado:

2030-02-09

En este caso, la fecha se interpretó como el día nueve de febrero.

Cambiemos el idioma a us_English :

SET LANGUAGE us_English;
SELECT CAST('09/02/2030' AS date);

Resultado:

2030-09-02

Esta vez interpretó la fecha como el segundo día de septiembre.

Concatenación de cadenas

Aquí hay un ejemplo de conversión de un valor numérico a una cadena para concatenar el valor con una cadena:

SELECT 'Likes: ' + CAST(178 AS VARCHAR(10));

Resultado:

Likes: 178

Esto es lo que sucede si no lo lanzamos:

SELECT 'Likes: ' + 178;

Resultado:

Msg 245, Level 16, State 1, Line 1
Conversion failed when converting the varchar value 'Likes: ' to data type int.

Al intentar concatenar dos valores con diferentes tipos de datos, SQL Server necesita convertir implícitamente uno de los valores para usar el tipo de datos del otro, de modo que ambos sean del mismo tipo de datos antes de que pueda realizar la concatenación. Sigue las reglas de precedencia de tipos de datos para hacer esta conversión.

En SQL Server, el INT tipo de datos tiene una precedencia mayor que VARCHAR .

Por lo tanto, en el ejemplo anterior, SQL Server intenta convertir la cadena en un número entero. Pero esto falla porque la cadena no se puede convertir a un número entero.

Texto truncado

Un pequeño truco útil que podemos realizar con CAST() La función es truncar cadenas más largas a una longitud más legible.

Aquí hay un ejemplo de texto truncado seleccionado de una tabla de base de datos:

SELECT
    ProductName,
    CAST(ProductName AS VARCHAR(20)) AS Truncated
FROM Products;

Resultado:

+---------------------------------+----------------------+
| ProductName                     | Truncated            |
|---------------------------------+----------------------|
| Left handed screwdriver         | Left handed screwdri |
| Long Weight (blue)              | Long Weight (blue)   |
| Long Weight (green)             | Long Weight (green)  |
| Sledge Hammer                   | Sledge Hammer        |
| Chainsaw                        | Chainsaw             |
| Straw Dog Box                   | Straw Dog Box        |
| Bottomless Coffee Mugs (4 Pack) | Bottomless Coffee Mu |
| Right handed screwdriver        | Right handed screwdr |
+---------------------------------+----------------------+

Más información

El CAST() La función funciona de manera similar a CONVERT() función, y muchas conversiones de datos se pueden hacer usando cualquiera de los dos. Dicho esto, hay diferencias entre ellos.

Consulte la documentación de Microsoft para CAST() y CONVERT() para obtener información más detallada sobre el uso de esta función.