Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Se aplica a:SQL Server
Azure SQL Database
Instancia administrada de Azure SQL
Azure Synapse Analytics
Analytics Platform System (PDW)
Punto de conexión de SQL Analytics en Microsoft Fabric
Almacén en Microsoft Fabric
Base de datos SQL 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 TRY_CONVERTla 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_CONVERTNULL.
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_CONVERTdevuelveNULLcuando 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; GOEsta consulta devuelve un resultado de
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; GOEsta consulta devuelve un resultado de
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 afirmación es un error, porque un entero no puede convertirse en el tipo de dato 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
Esta consulta devuelve un resultado de 2022-12-31 00:00:00.0000000.