PARSE (Transact-SQL)

适用于:SQL Server Azure SQL 数据库 Azure SQL 托管实例 Azure Synapse Analytics Microsoft Fabric 中的 SQL 分析终结点 Microsoft Fabric 中的仓库

返回 SQL Server 中转换为所请求的数据类型的表达式的结果。

Transact-SQL 语法约定

语法

PARSE ( string_value AS data_type [ USING culture ] )  

参数

string_value
nvarchar(4000) 值,表示要解析为指定数据类型的格式化值

string_value 必须为所请求的数据类型的表示形式,否则 PARSE 将引发错误

data_type
表示结果的所请求数据类型的文本值。

culture
可选字符串,它标识对 string_value 进行格式化的区域性

如果未提供 culture 参数,则使用当前会话的语言。 可以使用 SET LANGUAGE 语句隐式或显式设置此语言。 culture 接受 .NET Framework 支持的任何区域性;它不局限于 SQL Server 显式支持的语言。 如果 culture 参数无效,PARSE 将引发错误

返回类型

返回转换为所请求的数据类型的表达式的结果。

备注

作为参数传递给 PARSE 的 Null 值按两种方式处理:

  1. 如果传递一个 Null 常量,将引发错误。 无法以识别区域性的方式将 null 值分析为不同的数据类型。

  2. 如果在运行时传递了具有 null 值的参数,则将返回 null,以避免取消整个批处理。

PARSE 仅用于从字符串转换为日期/时间和数字类型。 对于一般的类型转换,请继续使用 CAST 或 CONVERT。 请记住,分析字符串值会带来一定的性能开销。

PARSE 依赖于 .NET Framework 公共语言运行时 (CLR) 的存在。

此函数将不会进行远程处理,因为它依赖于 CLR 的存在。 远程处理需要 CLR 的函数会导致在远程服务器上出现错误。

有关 data_type 参数的详细信息

data_type 参数的值局限于下表中显示的类型以及样式。 提供的样式信息有助于确定允许使用哪些类型的模式。 有关样式的详细信息,请参阅 System.Globalization.NumberStyles 和 DateTimeStyles 枚举的 .NET Framework 文档

类别 类型 .NET Framework 类型 使用的样式
Numeric bigint Int64 NumberStyles.Number
Numeric int Int32 NumberStyles.Number
Numeric smallint Int16 NumberStyles.Number
Numeric tinyint Byte NumberStyles.Number
Numeric Decimal 小数 NumberStyles.Number
Numeric numeric 小数 NumberStyles.Number
Numeric FLOAT Double NumberStyles.Float
Numeric real Single NumberStyles.Float
Numeric smallmoney 小数 NumberStyles.Currency
Numeric money 小数 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 区域性的映射。

完全名称 Alias LCID 特定区域性
us_english 英语 2052 zh-CN
Deutsch 德语 1031 de-DE
Français 法语 1036 fr-FR
日本語 日语 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 英语(英国) 2057 en-GB
eesti 爱沙尼亚语 1061 Et-EE
latviešu 拉脱维亚语 1062 lv-LV
lietuvių 立陶宛语 1063 lt-LT
Português (Brasil) 葡萄牙语(巴西) 1046 pt-BR
繁體中文 繁体中文 1028 zh-TW
한국어 韩语 1042 Ko-KR
简体中文 简体中文 2052 zh-CN
阿拉伯语 阿拉伯语 1025 ar-SA
ไทย 泰语 1054 Th-TH

示例

A. PARSE 为 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. PARSE 与货币符号

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

结果集如下。

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

°C 使用隐式设置的语言进行 PARSE

-- 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)