Dans SQL Server, une fonction souvent utilisée est CAST()
, qui convertit une expression d'un type de données en un autre. Mais si le cast ne réussit pas, il renvoie une erreur.
Saisissez TRY_CAST()
.
Le TRY_CAST()
La fonction ne renvoie pas d'erreur si le cast échoue. Au lieu de cela, il renvoie NULL
.
Il y a cependant des occasions où il renverra une erreur.
Syntaxe
La syntaxe ressemble à ceci :
TRY_CAST ( expression AS data_type [ ( length ) ] )
Où expression
est l'expression à convertir, data_type
est le nouveau type de données, et length
est une longueur facultative pour le nouveau type de données.
Exemple 1 – Le casting réussit
Voici un exemple de conversion d'une chaîne en decimal
:
SELECT TRY_CAST('007' AS DECIMAL(5,2));
Résultat :
7.00
Dans ce cas, le casting a réussi.
Exemple 2 – La diffusion échoue et renvoie NULL
Voici un exemple d'échec du cast et NULL
en cours de retour :
SELECT TRY_CAST('Double Oh Seven!' AS DECIMAL(5,2));
Résultat :
NULL
Le cast a échoué, et donc NULL
a été renvoyé.
À titre de comparaison, voici ce qui se passe lorsque nous utilisons CAST()
au lieu de TRY_CAST()
:
SELECT CAST('Double Oh Seven!' AS DECIMAL(5,2));
Résultat :
Msg 8114, Level 16, State 5, Line 1 Error converting data type varchar to numeric.
Exemple 3 – La diffusion échoue et renvoie une erreur
Il y a des occasions où TRY_CAST()
renverra une erreur.
Si un cast n'est explicitement pas autorisé, il renvoie une erreur :
SELECT TRY_CAST(10 AS xml);
Résultat :
Msg 529, Level 16, State 2, Line 1 Explicit conversion from data type int to xml is not allowed.
Plus d'informations
Voir comment CAST()
Fonctionne dans SQL Server pour plus d'exemples de conversion, et CAST()
contre TRY_CAST()
dans SQL Server pour une comparaison entre CAST()
et TRY_CAST()
.
Voir la documentation de Microsoft pour CAST()
et CONVERT()
pour des informations plus détaillées (la plupart s'appliquent également à TRY_CAST()
).