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 110
de 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