Comment utiliser la fonction TRY_CAST dans SQL Server

le TRY_CAST la fonction dans SQL Server est utilisée convertir la valeur de son type de données existant en un type de données cible spécifié. Cela se produit uniquement si l'opération est réussie. Il renvoie NULL si la conversion échoue. TRY_CAST est une version étendue de la fonction CAST. Ce tutoriel explique comment utiliser TRY_CAST dans SQL Server.

TRY_CAST considère la valeur transmise et son type de données existant et tente de la convertir en un type de données cible spécifié. Si l'opération de conversion est autorisée, elle renvoie la valeur dans le type de données cible spécifié. Si l'opération ne parvient pas à convertir la valeur, elle renvoie NULL en tant que sortie.

TRY_CAST a d'abord été inclus avec l'édition de Microsoft SQL Server 2012.

Syntaxe pour TRY_CAST

TRY_CAST (Expression as target_data_type [longueur]) 

Expression: Valeur à attribuer à un type de données cible
Type de données cible: Le type de données dans lequel la valeur doit être convertie
Longueur: Paramètre facultatif, pour spécifier la longueur du type de données

Limites d'utilisation de CAST dans SQL Server

Lors de l'utilisation de CAST, nous obtiendrons une erreur si la conversion échoue du type de données source au type de données cible. Si ce n'est pas autorisé, cela peut casser le code. Par conséquent, il est recommandé d'utiliser TRY_CAST au lieu de CAST.

Dans l'exemple suivant, j'essaie de convertir une valeur de chaîne en un entier, ce qui correspond à une conversion incorrecte. CAST ne parvient pas à terminer cette conversion et renvoie une erreur. Cependant, TRY_CAST renvoie NULL lorsque la conversion échoue.

SELECT CAST ('Tech-Recipes' en tant que INT) comme CastExample; 

Msg 245, Niveau 16, Etat 1, Ligne 1
La conversion a échoué lors de la conversion de la valeur varchar 'Tech-Recipes' en type de données int.



Utilisez TRY_CAST pour éviter que SQL Server ne génère une erreur en cas d'échec de la conversion du type de données.

SELECT TRY_CAST ('Tech-Recipes' en tant que INT) comme TryCastExample; 
TryCastExample -------------- NULL 

Exemples d'utilisation de TRY_CAST

1. Echec avec TRY_CAST (retourne NULL)

L'exemple ci-dessous montre que, en cas d'échec, TRY_CAST renvoie NULL au lieu de générer une erreur comme le fait CAST.

SELECT CASE WHEN TRY_CAST ('Tech-Recipes.com' AS INT) EST NUL ALORS 'La conversion a échoué' ELSE 'Conversion réussie' END; 

2. Conversion réussie avec TRY_CAST

L'exemple ci-dessous montre que TRY_CAST achève une conversion réussie s'il est autorisé à convertir en un type de données ciblé.

SELECT CASE WHEN TRY_CAST (1234 AS DECIMAL (18,2)) EST NULL ALORS 'La conversion a échoué' ELSE 'Conversion réussie' END; 

3. Conversion explicite à l'aide de TRY_CAST (non autorisé)

L'exemple ci-dessous montre que TRY_CAST n'est pas autorisé à effectuer une conversion explicite. TRY_CAST renvoie une erreur.

Msg 529, Niveau 16, Etat 2, Ligne 1
La conversion explicite du type de données int en xml n'est pas autorisée.

Résumé

TRY_CAST peut être utilisé à la place de la fonction CAST pour éviter de générer une erreur sans utiliser le bloc TRY-CATCH. Les exemples utilisés dans ce tutoriel montrent comment utiliser la fonction TRY_CAST dans SQL Server.