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

CONVERTIR() en SQL Server

En SQL Server, CONVERT() 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í:

CONVERT ( data_type [ ( length ) ] , expression [ , style ] ) 

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.

El style opcional El argumento se puede usar para especificar cómo la función debe traducir la expression argumento. Por ejemplo, podría usar este argumento para especificar el formato de fecha.

Ejemplo

Aquí hay un ejemplo de cómo convertir una cadena a decimal:

SELECT CONVERT(DECIMAL(5,2), '007');

Resultado:

7.00

Cadena hasta la fecha

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

SELECT CONVERT(date, '09 Feb 2030');

Resultado:

2030-02-09

En este caso el CONVERT() 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 CONVERT(date, 'My Birthday');

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 CONVERT(date, '09/02/2030');

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 CONVERT(date, '09/02/2030');

Resultado:

2030-09-02

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

El style Argumento

Podemos usar el style opcional argumento para especificar cómo debe traducirse la expresión.

Ejemplo:

SET LANGUAGE British;
SELECT 
    CONVERT(date, '09/02/2030') AS "British",
    CONVERT(date, '09/02/2030', 101) AS "US",
    CONVERT(date, '09/02/30', 1) AS "US (short)",
    CONVERT(date, '20300902', 112) AS "ISO",
    CONVERT(date, '09.02.2030', 104) AS "German";

Resultado:

+------------+------------+--------------+------------+------------+
| British    | US         | US (short)   | ISO        | German     |
|------------+------------+--------------+------------+------------|
| 2030-02-09 | 2030-09-02 | 2030-09-02   | 2030-09-02 | 2030-02-09 |
+------------+------------+--------------+------------+------------+

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 'Age: ' + CONVERT(varchar(10), 27);

Resultado:

Age: 27

Esto es lo que sucede si no lo convertimos primero:

SELECT 'Age: ' + 27;

Resultado:

Msg 245, Level 16, State 1, Line 1
Conversion failed when converting the varchar value 'Age: ' 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 poder 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 falla porque la cadena no se puede convertir en un número entero.

Texto truncado

Un pequeño truco útil que podemos realizar con CONVERT() 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,
    CONVERT(varchar(20), ProductName) 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 CONVERT() La función funciona de manera similar a CAST() 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.