TRY_CAST (Transact-SQL)
S’applique à : SQL Server Azure SQL Database Azure SQL Managed Instance Azure Synapse Analytics Analytics Platform System (PDW) SQL analytics endpoint in Microsoft Fabric Warehouse in 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.
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.
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.
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.
Result
----------------------------------
2022-12-31 00:00:00.0000000
(1 row(s) affected)