Funciones de Conversión de datos

Funciones para conversión de datos

Los datos en muchas ocasiones deben ser convertidos y transformados en ocasiones en un estándar para poder tratarlos, para esto se deben usar las funciones de Conversión de datos.

Las siguientes funciones admiten la conversión de tipos de datos.

CAST y CONVERT – Convierte una expresión de un tipo de datos en otro.
PARSE – Devuelve el resultado de una expresión, traducido al tipo de datos solicitado en SQL Server.
TRY_CONVERT – Devuelve una conversión de valor al tipo de datos especificado si la conversión se realiza correctamente; de lo contrario, devuelve NULL.
TRY_PARSE – Devuelve el resultado de una expresión, traducido al tipo de datos solicitado, o NULL si se produce un error en la conversión en SQL Server. Use TRY_PARSE solo para convertir de tipos de cadena a tipos de fecha y hora y de número.

Sintaxis y Ejemplos

— Sintaxis CAST
CAST ( expression AS data_type [ ( length ) ] )

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

Donde:

expresión: Se trata de cualquier expresión.
data_type: Es el tipo de datos de destino. Esto incluye xml, bigint, y sql_variant. No se pueden utilizar tipos de datos de alias.
longitud: Es un número entero opcional que especifica la longitud del tipo de datos de destino. El valor predeterminado es 30.
estilo: Expresión entera que especifica cómo la función CONVERT convertir expresión. Si style es NULL, se devuelve NULL. Determina el intervalo por data_type.

Para la conversión de datos se debe tener en cuenta si el tipo de dato original es posible de convertir al valor resultante.



Ejercicios

— Uso de CAST
– Listar los productos cuyo precio inicia con el dígito 3
USE Northwind
go
Select SUBSTRING(ProductName, 1, 30) As Producto, UnitPrice As Precio
FROM Products Where CAST(UnitPrice As int) LIKE ‘3%’
go
— Note que Cast convierte el Precio (UnitPrice) a Entero (int)

— Use CONVERT.
USE Northwind
GO
Select SUBSTRING(ProductName, 1, 30) AS Producto, UnitPrice
FROM Products Where CONVERT(int, UnitPrice) LIKE ‘3%’
GO

— Listado con el precio del producto concatenado.
Use Northwind
go
Select P.ProductName + ‘tiene precio de lista en: ‘ + CAST(P.UnitPrice AS varchar(12)) AS Lista
FROM Products As P Where UnitPrice BETWEEN 35.00 AND 40.00
go

— Convirtiendo fechas
Select GETDATE() AS Original, CAST(GETDATE() AS nvarchar(30)) AS ‘Convertida con Cast’,
CONVERT(nvarchar(30), GETDATE(), 126) AS ‘Convertida con Convert ISO8601’
go

— Parse
PARSE ( ValorString AS TipoDato [ USING culture ] )

— Interpretar el DateTime2
SELECT PARSE(‘Saturday, 24 February 1996’ AS datetime2 USING ‘en-US’) AS Resultado
go

— Interpretar datos numéricos
SELECT PARSE(‘€345.98’ AS money USING ‘de-DE’) AS ‘Moneda Alemania’
go

— Try_Convert
TRY_CONVERT ( data_type [ ( length ) ], expression [, style ]

— Intentar convertir un valor float a texto
Select CASE WHEN TRY_CONVERT(float, ‘test’) IS NULL
THEN ‘Cast ha fallado’
ELSE ‘Cast exitoso’
END AS Resultado;
go

— Try_Parse
TRY_PARSE ( string_value AS data_type [ USING culture ] )

— Convertir a fecha
SELECT TRY_PARSE(‘Primer día trabajo’ AS datetime2 USING ‘en-US’) AS Resultado
go