Compartir por


TRY_CONVERT (Transact-SQL)

Se aplica a: SQL Server Azure SQL Database Azure SQL Managed Instance Azure Synapse Analytics Analytics Platform System (PDW) Punto de conexión de análisis SQL en Microsoft Fabric Almacenamiento en Microsoft Fabric

Devuelve un valor convertido al tipo de datos especificado si la conversión se realiza correctamente; de lo contrario, devuelve NULL.

Convenciones de sintaxis de Transact-SQL

Sintaxis

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

Argumentos

data_type

Tipo de datos al que se va a convertir expression.

length

Entero opcional que especifica la longitud del tipo de datos de destino para los tipos de datos que permiten una longitud especificada por el usuario. El valor máximo de longitud es de 8000 bytes.

expression

Valor que se va a convertir.

style

Expresión entera opcional que especifica cómo se va a traducir la TRY_CONVERT función.

style acepta los mismos valores que el parámetro style de la CONVERT función. Para obtener más información, vea CAST y CONVERT.

El valor de data_type determina el intervalo de valores aceptables. Si style es NULL, devuelve TRY_CONVERT NULL.

Tipos de valores devueltos

Devuelve un valor convertido al tipo de datos especificado si la conversión se realiza correctamente; de lo contrario, devuelve NULL.

Comentarios

TRY_CONVERT toma el valor que se le ha pasado e intenta convertirlo al data_type especificado. Si la conversión se realiza correctamente, TRY_CONVERT devuelve el valor como el data_type especificado; si se produce un error, NULL se devuelve. Sin embargo, si se solicita una conversión que no se permite explícitamente, se producirá un error en TRY_CONVERT.

TRY_CONVERT es una palabra clave reservada, a partir del nivel 110de compatibilidad .

Esta función es capaz de ser remota a los servidores que tienen SQL Server 2012 (11.x) y versiones posteriores. No está remoto a los servidores que tienen una versión anterior a SQL Server 2012 (11.x).

Ejemplos

A. TRY_CONVERT devuelve NULL

En el ejemplo siguiente se muestra que TRY_CONVERT devuelve NULL cuando se produce un error en la conversión.

SELECT
    CASE WHEN TRY_CONVERT(FLOAT, 'test') IS NULL
    THEN 'Cast failed'
    ELSE 'Cast succeeded'
END AS Result;
GO

Este es el conjunto de resultados.

Result  
------------  
Cast failed

En el ejemplo siguiente se demuestra que la expresión debe tener el formato esperado.

SET DATEFORMAT dmy;
SELECT TRY_CONVERT(DATETIME2, '12/31/2022') AS Result;
GO

Este es el conjunto de resultados.

Result  
----------------------  
NULL

B. TRY_CONVERT genera un error

En el ejemplo siguiente, se muestra que TRY_CONVERT devuelve un error cuando la conversión no está explícitamente permitida.

SELECT TRY_CONVERT(XML, 4) AS Result;
GO

El resultado de esta instrucción es un error, ya que un entero no se puede convertir en un tipo de datos xml.

Explicit conversion from data type int to xml is not allowed.

C. TRY_CONVERT se realiza correctamente

Este ejemplo demuestra que la expresión debe tener el formato esperado.

SET DATEFORMAT mdy;
SELECT TRY_CONVERT(DATETIME2, '12/31/2022') AS Result;
GO

Este es el conjunto de resultados.

Result
----------------------------------
2022-12-31 00:00:00.0000000