Partager via


TRY_CAST (Transact-SQL)

S’applique à :SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)Point de terminaison d’analytique SQL dans Microsoft FabricEntrepôt dans Microsoft FabricBase de données SQL dans Microsoft Fabric

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

Conventions de la syntaxe Transact-SQL

Syntaxe

TRY_CAST ( expression AS data_type [ ( length ) ] )

Arguments

expression

Spécifie toute expression valide à convertir.

data_type

Type de données vers lequel effectuer le transtypage d’expression. Cette valeur détermine la plage de valeurs acceptables.

length

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

Types de retour

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

Remarques

TRY_CAST prend la valeur qui lui est transmise et tente de la convertir vers le type data_type spécifié. Si le transtypage réussit, TRY_CAST renvoie la valeur dans le type data_type spécifié ; si une erreur se produit, la valeur NULL est renvoyée. 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.

TRY_CAST ne fonctionne pas pour une expression dans les cas suivants :

  • varchar(max) si la longueur est supérieure à 8 000
  • nvarchar(max) si la longueur est supérieure à 4 000

Exemples

R. TRY_CAST renvoie 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
    

    Cette requête renvoie un résultat de Cast failed.

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

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

    Cette requête renvoie un résultat de NULL.

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 affirmation est une erreur, car un entier ne peut pas être casté dans le 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/2022' AS DATETIME2) AS Result;
GO

Cette requête renvoie un résultat de 2022-12-31 00:00:00.0000000.