TRY_PARSE (Transact-SQL)

S’applique à :SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsPoint de terminaison analytique SQL dans Microsoft FabricEntrepôt dans Microsoft Fabric

Retourne le résultat d'une expression, traduit en type de données demandé, ou NULL si la conversion échoue dans SQL Server. Utilisez TRY_PARSE uniquement pour effectuer une conversion d'une chaîne en un type date/heure ou numérique.

Conventions de la syntaxe Transact-SQL

Syntaxe

TRY_PARSE ( string_value AS data_type [ USING culture ] )  

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

string_value
Valeur nvarchar(4000) représentant la valeur mise en forme à analyser dans le type de données spécifié.

string_value doit être une représentation valide du type de données demandé, sinon TRY_PARSE renvoie la valeur Null.

data_type
Littéral représentant le type de données demandé pour le résultat.

culture
Chaîne facultative qui identifie la culture dans laquelle string_value est mise en forme.

Si l’argument culture n’est pas fourni, la langue de la session en cours est utilisée. Cette langue est définie implicitement, ou explicitement à l'aide de l'instruction SET LANGAGE. culture accepte n’importe quelle culture prise en charge par le .NET Framework ; elle n’est pas limitée aux langues explicitement prises en charge par SQL Server. Si l’argument culture n’est pas valide, PARSE génère une erreur.

Types de retour

Retourne le résultat de l'expression, traduit en type de données demandé, ou NULL si la conversion échoue.

Remarques

Utilisez TRY_PARSE uniquement pour effectuer une conversion d'une chaîne en un type date/heure ou numérique. Pour les conversions de type général, continuez à utiliser CAST ou CONVERT. N'oubliez pas qu'il existe une certaine surcharge des performances lors de l'analyse de la valeur de chaîne.

TRY_PARSE repose sur la présence du CLR (Common Langage Runtime) .NET Framework.

Cette fonction ne peut pas être exécutée à distance car elle dépend de la présence du CLR. L'exécution à distance d'une fonction qui nécessite le CLR provoquerait une erreur sur le serveur distant.

Informations supplémentaires sur le paramètre data_type

Les valeurs du paramètre data_type sont limitées aux types répertoriés avec les styles dans le tableau ci-dessous. Les informations sur le style sont fournies pour aider à déterminer les types de modèles autorisés. Pour plus d’informations sur les styles, consultez la documentation du .NET Framework pour les énumérations System.Globalization.NumberStyles et DateTimeStyles.

Category Type Type .NET Styles utilisés
Numérique bigint Int64 NumberStyles.Number
Numérique int Int32 NumberStyles.Number
Numérique SMALLINT Int16 NumberStyles.Number
Numérique TINYINT Byte NumberStyles.Number
Numérique Décimal Decimal NumberStyles.Number
Numérique numeric Decimal NumberStyles.Number
Numérique float Double NumberStyles.Float
Numérique real Unique NumberStyles.Float
Numérique SMALLMONEY Decimal NumberStyles.Currency
Numérique money Decimal NumberStyles.Currency
Date et heure Date DateTime DateTimeStyles.AllowWhiteSpaces | DateTimeStyles.AssumeUniversal
Date et heure time TimeSpan DateTimeStyles.AllowWhiteSpaces | DateTimeStyles.AssumeUniversal
Date et heure datetime DateTime DateTimeStyles.AllowWhiteSpaces | DateTimeStyles.AssumeUniversal
Date et heure smalldatetime DateTime DateTimeStyles.AllowWhiteSpaces | DateTimeStyles.AssumeUniversal
Date et heure datetime2 DateTime DateTimeStyles.AllowWhiteSpaces | DateTimeStyles.AssumeUniversal
Date et heure datetimeoffset DateTimeOffset DateTimeStyles.AllowWhiteSpaces | DateTimeStyles.AssumeUniversal

Informations supplémentaires sur le paramètre culture

Le tableau suivant montre les mappages des langues de SQL Server aux cultures .NET framework.

Nom complet Alias LCID Culture spécifique
us_english Anglais 1033 fr-FR
Deutsch Allemand 1031 de-DE
Français Français 1036 fr-FR
日本語 Japonais 1041 ja-JP
Dansk Danois 1030 da-DK
Español Espagnol 3082 es-ES
Italiano Italien 1040 it-IT
Nederlands Néerlandais 1043 nl-NL
Norsk Norvégien 2068 nn-NO
Português Portugais 2070 pt-PT
Suomi Finnois 1035 fi-FI
Svenska Suédois 1053 sv-SE
čeština Tchèque 1029 Cs-CZ
magyar Hongrois 1038 Hu-HU
polski Polonais 1045 Pl-PL
română Roumain 1048 Ro-RO
hrvatski Croate 1050 hr-HR
slovenčina Slovaque 1051 Sk-SK
slovenski Slovène 1060 Sl-SI
ελληνικά Grec 1032 El-GR
български Bulgare 1026 bg-BG
русский Russe 1049 Ru-RU
Türkçe Turc 1055 Tr-TR
British British English 2057 en-GB
eesti Estonien 1061 Et-EE
latviešu Letton 1062 lv-LV
lietuvių Lituanien 1063 lt-LT
Português (Brasil) Brésilien 1046 pt-br
繁體中文 Chinois traditionnel 1028 zh-TW
한국어 Coréen 1042 Ko-KR
简体中文 Chinois simplifié 2052 zh-CN
Arabe Arabe 1025 ar-SA
ไทย Thaï 1054 Th-TH

Exemples

R. Exemple simple de TRY_PARSE

SELECT TRY_PARSE('Jabberwokkie' AS datetime2 USING 'en-US') AS Result;  

Voici le jeu de résultats obtenu.

Result  
---------------  
NULL  
  
(1 row(s) affected)  

B. Détection de valeurs NULL avec TRY_PARSE

SELECT  
    CASE WHEN TRY_PARSE('Aragorn' AS decimal USING 'sr-Latn-CS') IS NULL  
        THEN 'True'  
        ELSE 'False'  
END  
AS Result;  

Voici le jeu de résultats obtenu.

Result  
---------------  
True  
  
(1 row(s) affected)  

C. Utilisation de IIF avec TRY_PARSE et paramètre de culture implicite

SET LANGUAGE English;  
SELECT IIF(TRY_PARSE('01/01/2011' AS datetime2) IS NULL, 'True', 'False') AS Result;

Voici le jeu de résultats obtenu.

Result  
---------------  
False  
  
(1 row(s) affected)  

Voir aussi

PARSE (Transact-SQL)
Fonctions de conversion (Transact-SQL)
TRY_CONVERT (Transact-SQL)
CAST et CONVERT (Transact-SQL)