Partager via


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)

Voir aussi