Compartir a través de


TRY_CONVERT (Transact-SQL)

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

Icono de vínculo a temas Convenciones de sintaxis de Transact-SQL

Sintaxis

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

Argumentos

  • data_type [ ( length ) ]
    Tipo de datos al que se va a convertir expression.

  • expression
    Valor que se va a convertir.

  • style
    Expresión opcional de tipo entero que especifica cómo traducirá expression la función CONVERT TRY_CONVERT.

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

    El intervalo de valores aceptables está determinado por el valor de data_type. Si style es NULL, TRY_CONVERT devuelve NULL.

Tipos de valor devuelto

Devuelve una conversión de valor 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, se devuelve NULL. Sin embargo, si se solicita una conversión que no se permite explícitamente, TRY_CONVERT generará un error.

TRY_CONVERT es una nueva palabra clave en el nivel de compatibilidad 110.

Esta función se puede enviar de forma remota a servidores que tengan una versión de SQL Server 2012 y superior. No se puede enviar de forma remota a servidores que tengan una versión inferior a SQL Server 2012.

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

El conjunto de resultados es el siguiente.

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

(1 row(s) affected)

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

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

El conjunto de resultados es el siguiente.

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

(1 row(s) affected)

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/2010') AS Result;
GO

El conjunto de resultados es el siguiente.

Result
----------------------------------
2010-12-31 00:00:00.0000000

(1 row(s) affected)

Vea también

Referencia

CAST y CONVERT (Transact-SQL)