TRY_CAST (Transact-SQL)

S’applique à :SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)Point de terminaison analytique SQL dans Microsoft FabricEntrepôt 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 ) ] )

Remarque

Pour afficher la syntaxe Transact-SQL pour SQL Server 2014 (12.x) et versions antérieures, consultez la Documentation sur les versions antérieures.

Arguments

expression

Spécifie toute expression valide à convertir.

data_type

Type de données vers lequel effectuer le transtypage d’expression.

length

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

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

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 varchar(max) si la longueur est supérieure à 8 000.

Exemples

R. 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 le jeu de résultats obtenu.

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

Voici le jeu de résultats obtenu.

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

Voici le jeu de résultats obtenu.

Result
----------------------------------
2022-12-31 00:00:00.0000000
  
(1 row(s) affected)

Voir aussi