PARSE (Transact-SQL)
適用対象: SQL Server
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
Microsoft Fabric のツールハウス内の SQL 分析エンドポイント
SQL Server で要求されたデータ型に変換された式の結果を返します。
構文
PARSE ( string_value AS data_type [ USING culture ] )
Note
SQL Server 2014 (12.x) 以前のバージョンの Transact-SQL 構文を確認するには、以前のバージョンのドキュメントを参照してください。
引数
string_value
指定したデータ型に解析する、書式設定された値を表す nvarchar(4000) 値。
string_value は、要求されたデータ型の有効な表現である必要があります。そうでない場合、PARSE でエラーが発生します。
data_type
結果に要求されたデータ型を表すリテラル値。
culture
string_value が書式設定されるカルチャを識別する文字列です (省略可能)。
culture 引数が指定されていない場合は、現在のセッションの言語が使用されます。 この言語は、SET LANGUAGE ステートメントを使用して、暗黙的または明示的に設定されます。 culture は、.NET Framework でサポートされている任意のカルチャを受け入れます。SQL Server で明示的にサポートされている言語に制限されません。 culture 引数が有効でない場合は、PARSE でエラーが発生します。
戻り値の型
要求されたデータ型に変換された式の結果を返します。
解説
PARSE への引数として渡される null の値は、2 つの方法で扱われます。
null 定数が渡されると、エラーが発生します。 null の値をカルチャに対応する方法で異なるデータ型に解析することはできません。
実行時に null の値を含んだパラメーターが渡された場合、バッチ全体がキャンセルされないように null が返されます。
PARSE は、文字列型から日付/時刻型および数値型への変換にのみ使用します。 一般的な型変換では、引き続き CAST または CONVERT を使用します。 文字列値の解析中に一定のパフォーマンス オーバーヘッドが発生することに注意してください。
PARSE は、.NET Framework の共通言語ランタイム (CLR) の存在に依存しています。
この関数は、CLR の存在に依存するため、リモート処理は行われません。 CLR が必要な関数をリモート処理すると、リモート サーバー上でエラーが発生します。
data_type パラメーターの詳細
data_type パラメーターの値は、スタイルと共に、次の表に示す型に制限されます。 スタイル情報は、許可するパターンの種類を決定するために提供されます。 スタイルについて詳しくは、.NET Framework のドキュメントで System.Globalization.NumberStyles および DateTimeStyles 列挙型を参照してください。
カテゴリ | Type | .NET Framework 型 | 使用されるスタイル |
---|---|---|---|
数値 | bigint | Int64 | NumberStyles.Number |
数値 | INT | Int32 | NumberStyles.Number |
数値 | smallint | Int16 | NumberStyles.Number |
数値 | tinyint | Byte | NumberStyles.Number |
数値 | decimal | Decimal (10 進数型) | NumberStyles.Number |
数値 | numeric | Decimal (10 進数型) | NumberStyles.Number |
数値 | float | Double | NumberStyles.Float |
数値 | real | Single | NumberStyles.Float |
数値 | smallmoney | Decimal | NumberStyles.Currency |
数値 | money | Decimal | NumberStyles.Currency |
日時 | date | DateTime | DateTimeStyles.AllowWhiteSpaces | DateTimeStyles.AssumeUniversal |
日時 | time | TimeSpan | DateTimeStyles.AllowWhiteSpaces | DateTimeStyles.AssumeUniversal |
日時 | datetime | DateTime | DateTimeStyles.AllowWhiteSpaces | DateTimeStyles.AssumeUniversal |
日時 | smalldatetime | DateTime | DateTimeStyles.AllowWhiteSpaces | DateTimeStyles.AssumeUniversal |
日時 | datetime2 | DateTime | DateTimeStyles.AllowWhiteSpaces | DateTimeStyles.AssumeUniversal |
日時 | datetimeoffset | DateTimeOffset | DateTimeStyles.AllowWhiteSpaces | DateTimeStyles.AssumeUniversal |
culture パラメーターの詳細
次の表に、SQL Server 言語から .NET Framework カルチャへのマッピングを示します。
完全名 | エイリアス | LCID | 特定のカルチャ |
---|---|---|---|
us_english | 英語 | 1033 | ja-JP |
Deutsch | ドイツ語 | 1031 | de-DE |
Français | フランス語 | 1036 | fr-FR |
Japanese | 日本語 | 1041 | ja-JP |
Dansk | デンマーク語 | 1030 | da-DK |
Español | スペイン語 | 3082 | es-ES |
Italiano | イタリア語 | 1040 | it-IT |
Nederlands | オランダ語 | 1043 | nl-NL |
Norsk | ノルウェー語 | 2068 | nn-NO |
Português | ポルトガル語 | 2070 | pt-PT |
Suomi | フィンランド語 | 1035 | fi-FI |
Svenska | スウェーデン語 | 1053 | sv-SE |
čeština | チェコ語 | 1029 | Cs-CZ |
magyar | ハンガリー語 | 1038 | Hu-HU |
polski | ポーランド語 | 1045 | Pl-PL |
română | ルーマニア語 | 1048 | Ro-RO |
hrvatski | クロアチア語 | 1050 | hr-HR |
slovenčina | スロバキア語 | 1051 | Sk-SK |
slovenski | スロベニア語 | 1060 | Sl-SI |
ελληνικά | ギリシャ語 | 1032 | El-GR |
български | ブルガリア語 | 1026 | bg-BG |
русский | ロシア語 | 1049 | Ru-RU |
Türkçe | トルコ語 | 1055 | Tr-TR |
British | 英語 (U.K.) | 2057 | en-GB |
eesti | エストニア語 | 1061 | Et-EE |
latviešu | ラトビア語 | 1062 | lv-LV |
lietuvių | リトアニア語 | 1063 | lt-LT |
Português (Brasil) | Brazilian | 1046 | pt-BR |
繁體中文 | Traditional Chinese | 1028 | zh-TW |
한국어 | 韓国語 | 1042 | Ko-KR |
简体中文 | 簡体中国語 | 2052 | zh-CN |
アラビア語 | アラビア語 | 1025 | ar-SA |
ไทย | タイ語 | 1054 | Th-TH |
例
A. Datetime2 に解析します。
SELECT PARSE('Monday, 13 December 2010' AS datetime2 USING 'en-US') AS Result;
結果セットは次のようになります。
Result
---------------
2010-12-13 00:00:00.0000000
(1 row(s) affected)
B. 通貨記号で解析します
SELECT PARSE('€345,98' AS money USING 'de-DE') AS Result;
結果セットは次のようになります。
Result
---------------
345.98
(1 row(s) affected)
C. 暗黙的な言語設定で解析します
-- The English language is mapped to en-US specific culture
SET LANGUAGE 'English';
SELECT PARSE('12/16/2010' AS datetime2) AS Result;
結果セットは次のようになります。
Result
---------------
2010-12-16 00:00:00.0000000
(1 row(s) affected)