Compartir a través de


TRY_CAST (Transact-SQL)

Se aplica a:SQL ServerAzure SQL DatabaseInstancia administrada de Azure SQLAzure Synapse AnalyticsAnalytics Platform System (PDW)Punto de conexión de SQL Analytics en Microsoft FabricAlmacén en Microsoft FabricBase de datos SQL en Microsoft Fabric

Devuelve una conversión de valor 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_CAST ( expression AS data_type [ ( length ) ] )

Argumentos

expression

Especifica cualquier expresión válida que se va a convertir.

data_type

Tipo de datos al que se va a convertir expression. Este valor determina el intervalo de valores aceptables.

length

Número entero opcional que especifica la longitud del tipo de datos de destino.

Tipos de valores devueltos

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

Observaciones

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

TRY_CAST no es una palabra clave reservada y está disponible en todos los niveles de compatibilidad. TRY_CAST tiene la misma semántica que TRY_CONVERT cuando se conecta con servidores remotos.

TRY_CAST no funciona para una expresión en los casos siguientes:

  • varchar(max) si la longitud es superior a 8000
  • nvarchar(max) si la longitud es superior a 4000

Ejemplos

A. TRY_CAST devuelve NULL

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

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

    Esta 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_CAST('12/31/2022' AS DATETIME2) AS Result;
    GO
    

    Esta consulta devuelve un resultado de NULL.

B. TRY_CAST genera un error

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

SELECT TRY_CAST(4 AS XML) 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_CAST se realiza correctamente

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

SET DATEFORMAT mdy;

SELECT TRY_CAST('12/31/2022' AS DATETIME2) AS Result;
GO

Esta consulta devuelve un resultado de 2022-12-31 00:00:00.0000000.