PARSE (Transact-SQL)
返回 SQL Server 中转换为所请求的数据类型的表达式的结果。
适用范围:SQL Server(SQL Server 2008 至当前版本),Windows Azure SQL Database(初始版本至当前版本)。 |
语法
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 值按两种方式处理:
如果传递一个 Null 常量,将引发错误。 无法以识别区域性的方式将 null 值分析为不同的数据类型。
如果在运行时传递了具有 null 值的参数,则将返回 null,以避免取消整个批处理。
PARSE 仅用于从字符串转换为日期/时间和数字类型。 对于一般的类型转换,请继续使用 CAST 或 CONVERT。 请记住,分析字符串值会带来一定的性能开销。
PARSE 依赖于 .NET Framework 公共语言运行时 (CLR) 的存在。
此函数将不会进行远程处理,因为它依赖于 CLR 的存在。 远程处理需要 CLR 的函数会导致在远程服务器上出现错误。
有关 data_type 参数的详细信息
data_type 参数的值局限于下表中显示的类型以及样式。 提供的样式信息有助于确定允许使用哪些类型的模式。 有关样式的详细信息,请参阅 .NET Framework 文档中关于 System.Globalization.NumberStyles 和 DateTimeStyles 枚举的内容。
类别 |
类型 |
.NET Framework 类型 |
使用的样式 |
---|---|---|---|
数字 |
bigint |
Int64 |
NumberStyles.Number |
数字 |
int |
Int32 |
NumberStyles.Number |
数字 |
smallint |
Int16 |
NumberStyles.Number |
数字 |
tinyint |
Byte |
NumberStyles.Number |
数字 |
decimal |
Decimal |
NumberStyles.Number |
数字 |
numeric |
Decimal |
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 |
有关区域性参数的详细信息
下表显示从 SQL Server 语言到 .NET Framework 区域性的映射。
完全名称 |
别名 |
LCID |
特定区域性 |
---|---|---|---|
us_english |
英语 |
1033 |
en-US |
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 |
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(巴西) |
巴西葡萄牙语 |
1046 |
pt-BR |
繁體中文 |
繁体中文 |
1028 |
zh-TW |
한국어 |
朝鲜语 |
1042 |
Ko-KR |
简体中文 |
简体中文 |
2052 |
zh-CN |
Arabic |
阿拉伯语 |
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)