Partager via


TRY_CAST (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_CAST ( expression AS data_type [ ( length ) ] )

Arguments

  • expression
    Valeur à convertir. Toute expression valide.
  • data_type
    Type de données dans lequel convertir l'expression expression.

  • length
    Entier facultatif qui spécifie la longueur du type de données cible.

    La plage de valeurs acceptables est déterminée par la valeur de data_type.

Types de retours

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

Notes

TRY_CAST prend la valeur qui lui est passée et tente de la convertir en data_type spécifié. Si la conversion réussit, TRY_CAST 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_CAST échoue avec une erreur.

TRY_CAST n'est pas un nouveau mot clé réservé et est disponible à tous les niveaux de compatibilité. TRY_CAST a la même sémantique que TRY_CONVERT lors de la connexion à des serveurs distants.

Exemples

A.TRY_CAST retourne une valeur Null.

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

SELECT 
    CASE WHEN TRY_CAST('test' AS float) 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_CAST('12/31/2010' AS datetime2) AS Result;
GO

Voici l'ensemble des résultats.

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

(1 row(s) affected)

B.TRY_CAST échoue avec une erreur

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

SELECT TRY_CAST(4 AS xml) 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-CAST réussit.

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

SET DATEFORMAT mdy;
SELECT TRY_CAST('12/31/2010' AS datetime2) 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

TRY_CONVERT (Transact-SQL)

CAST et CONVERT (Transact-SQL)