适用于:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
Microsoft Fabric
中的SQL分析端点Microsoft Fabric
中的仓库Microsoft Fabric中的SQL数据库
返回表达式的结果,转换为请求的数据类型,或 NULL 在 SQL Server 投射失败时返回。 仅用于 TRY_PARSE 字符串类型转换为日期/时间和数字类型。
语法
TRY_PARSE ( string_value AS data_type [ USING culture ] )
参数
string_value
nvarchar(4000) 值,表示要分析为指定数据类型的格式化值。
string_value 必须是请求数据类型的有效表示,否则 TRY_PARSE 返回空。
data_type
表示结果的所请求数据类型的文本。
culture
可选字符串,它标识对 string_value 进行格式化的区域性。
如果未提供区域性参数,则使用当前会话的语言。 该语言通过使用 SET LANGUAGE 语句,可以隐式或显式地设置。
culture 接受任何由 .NET 框架支持的文化。 它并不限于SQL Server明确支持的语言。
如果区域性参数无效,PARSE则引发错误。
返回类型
返回表达式的结果,转换为请求的数据类型,或 NULL 在投射失败时返回。
备注
仅用于 TRY_PARSE 字符串类型转换为日期/时间和数字类型。 对于一般类型的转换,继续使用 CAST 或 CONVERT。 请记住,解析字符串值会有一定的性能开销。
TRY_PARSE 依赖于.NET Framework通用语言运行时(CLR)的存在。
此函数无法进行远程控制,因为它取决于 CLR 的存在。 远程处理需要 CLR 的函数会导致在远程服务器上出现错误。
关于该 data_type 参数的更多信息
data_type 参数的值局限于下表中显示的类型以及样式。 提供的样式信息有助于确定允许使用哪些类型的模式。 有关样式的更多信息,请参见 .NET Framework 文档System.Globalization.NumberStylesDateTimeStyles中的枚举和枚举。
| 类别 | 类型 | .NET 类型 | 使用的样式 |
|---|---|---|---|
| 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 | Decimal |
NumberStyles.Number |
| Numeric | 漂浮 | Double |
NumberStyles.Float |
| Numeric | 真实 | Single |
NumberStyles.Float |
| Numeric | smallmoney | Decimal |
NumberStyles.Currency |
| Numeric | 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 区域性的映射。
| 完全名称 | Alias | LCID | 特定区域性 |
|---|---|---|---|
| us_english | 英语 | 2052 | 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-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 |
| 葡萄牙语(巴西) | 葡萄牙语(巴西) | 1046 | pt-BR |
| 繁體中文 | 繁体中文 | 1028 | zh-TW |
| 한국어 | 韩语 | 1042 | Ko-KR |
| 简体中文 | 简体中文 | 2052 | zh-CN |
| 阿拉伯语 | 阿拉伯语 | 1025 | ar-SA |
| ไทย | 泰语 | 1054 | Th-TH |
示例
A. TRY_PARSE的基本例子
SELECT TRY_PARSE ('Jabberwokkie' AS DATETIME2 USING 'en-US') AS Result;
此查询返回的结果为 NULL。
B. 用TRY_PARSE检测空算
SELECT
CASE WHEN TRY_PARSE ('Aragorn' AS DECIMAL USING 'sr-Latn-CS') IS NULL
THEN 'True'
ELSE 'False'
END AS Result;
此查询返回的结果为 True。
°C 使用IIF配合 TRY_PARSE 和隐式文化设置
SET LANGUAGE English;
SELECT IIF (TRY_PARSE ('01/01/2011' AS DATETIME2) IS NULL, 'True', 'False') AS Result;
此查询返回的结果为 False。