TRY_CONVERT (Transact-SQL)

Retourne une valeur convertie en type de données spécifié si la conversion aboutit ; sinon, retourne NULL.

Icône Lien de rubrique Conventions de la syntaxe Transact-SQL

Syntaxe

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

Arguments

  • data_type [ ( length ) ]
    Type de données dans lequel convertir l'expression expression.

  • expression
    Valeur à convertir.

  • style
    Expression entière facultative qui spécifie comment la fonction TRY_CONVERT doit traduire expression.

    style accepte les mêmes valeurs que le paramètre style de la fonction CONVERT. Pour plus d'informations, consultez CAST et CONVERT (Transact-SQL).

    La plage de valeurs acceptables est déterminée par la valeur de data_type. Si style est NULL, alors TRY_CONVERT renvoie la valeur NULL.

Type des valeurs retournées

Retourne une valeur convertie en type de données spécifié si la conversion aboutit ; sinon, retourne NULL.

Notes

TRY_CONVERT prend la valeur qui lui est passée et tente de la convertir en data_type spécifié. Si la conversion réussit, TRY_CONVERT retourne la valeur comme data_type spécifié ; si une erreur se produit, NULL est retourné. Toutefois, si vous demandez une conversion qui n'est pas autorisée explicitement, TRY_CONVERT échoue avec une erreur.

TRY_CONVERT est un nouveau mot clé dans le niveau de compatibilité 110.

Cette fonction peut être exécutée à distance sur des serveurs SQL Server 2012 ou version ultérieure. Elle ne peut pas être exécutée à distance sur des serveurs dont la version est antérieure à SQL Server 2012.

Exemples

A.TRY_CONVERT retourne la valeur NULL.

L'exemple suivant montre que TRY_CONVERT retourne Null lorsque la conversion échoue.

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

Voici l'ensemble des résultats.

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

(1 row(s) affected)

L'exemple suivant montre que l'expression doit être au format attendu.

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

Voici l'ensemble des résultats.

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

(1 row(s) affected)

B.TRY_CONVERT échoue avec une erreur

L'exemple suivant montre que TRY_CONVERT retourne une erreur lorsque la conversion n'est pas autorisée explicitement.

SELECT TRY_CONVERT(xml, 4) AS Result;
GO

Le résultat de cette instruction est une erreur, car un entier ne peut pas être converti en un type de données XML.

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

C.TRY_CONVERT réussit

Cet exemple suivant montre que l'expression doit être au format attendu.

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

Voici l'ensemble des résultats.

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

(1 row(s) affected)

Voir aussi

Référence

CAST et CONVERT (Transact-SQL)