PARSE (Transact-SQL)

Retourne le résultat d'une expression, traduit en type de données demandé dans SQL Server 2012.

Icône Lien de rubrique Conventions de la syntaxe Transact-SQL

Syntaxe

PARSE ( string_value AS data_type [ USING culture ] )

Arguments

  • string_value
    Valeurnvarchar(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 PARSE génère une erreur.

  • data_type
    Valeur littérale 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 active est utilisée. Cette langue est défini implicitement, ou explicitement à l'aide de l'instruction SET LANGAGE. culture reçoit n'importe quelle culture prise en charge par le .NET framework ; il n'est pas limité aux langues explicitement prises en charge par SQL Server. Si l'argument culture n'est pas valide, PARSE génère une erreur.

Types des valeurs retournés

Retourne le résultat de l'expression, traduit en type de données demandé.

Notes

Les valeurs NULL passées comme arguments à PARSE sont traitées de deux façons :

  1. Si une constante NULL est passée, une erreur est générée. Une valeur NULL ne peut pas être analysée en un type de données différent d'une manière compatible avec la culture.

  2. Si un paramètre avec une valeur NULL est passé au moment de l'exécution, la valeur NULL est retournée, afin d'éviter l'annulation du traitement entier.

Utilisez 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.

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 concernant le paramètre de type de données

Les valeurs du paramètre data_type sont limitées aux types répertoriés dans le tableau ci-dessous, ainsi que les styles. 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.

Catégorie

Type

Type .NET Framework

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

decimal

Decimal

NumberStyles.Number

Numérique

numeric

Decimal

NumberStyles.Number

Numérique

float

Double

NumberStyles.Float

Numérique

real

Single

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 concernant le paramètre de 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

Finlandais

1035

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

Anglais britannique

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ïlandais

1054

Th-TH

Exemples

A.PARSE en datetime2

SELECT PARSE('Monday, 13 December 2010' AS datetime2 USING 'fr-fr') AS Result;

Voici l'ensemble des résultats.

Result
---------------
2010-12-13 00:00:00.0000000

(1 row(s) affected)

B.PARSE avec symbole monétaire

SELECT PARSE('€345,98' AS money USING 'de-DE') AS Result;

Voici l'ensemble des résultats.

Result
---------------
345.98

(1 row(s) affected)

C.PARSE avec définition implicite de la langue

-- The English language is mapped to fr-fr specific culture
SET LANGUAGE 'English';
SELECT PARSE('12/16/2010' AS datetime2) AS Result;

Voici l'ensemble des résultats.

Result
---------------
2010-12-16 00:00:00.0000000

(1 row(s) affected)