SQL PARSE()函数
SQL PARSE() 函数是一个转换函数,将字符串数据转换为所需的数据格式,并将结果作为表达式返回。建议使用此SQL PARSE函数将字符串数据转换为日期/时间或数值类型。
语法
下面是SQL PARSE()函数的语法:
PARSE ( string_value AS data_type [ USING culture ] )
参数
此函数只接受三个参数。以下是对每个参数的描述:
- string_value - 这是要转换为特定数据类型的表达式。
-
data_type - 这是要将string_value转换为的数据类型。
-
culture - 这是一个可选参数,用于格式化字符串值的文化。
让我们来看一下下表中parse支持的文化-
文化 | 完整名称 | 语言 |
---|---|---|
en-US | 美国英语 | 英语 |
de-DE | 德语 | 德语 |
fr-FR | 法语 | 法语 |
ja-JP | 日语 | 日语 |
da-DK | 丹麦语 | 丹麦语 |
es-ES | 西班牙语 | 西班牙语 |
it-IT | 意大利语 | 意大利语 |
nl-NL | 荷兰语 | 荷兰语 |
nn-NO | 挪威语 | 挪威语 |
pt-PT | 葡萄牙语 | 葡萄牙语 |
fi-FI | 芬兰语 | 芬兰语 |
sv-SE | 瑞典语 | 瑞典语 |
Cs-CZ | 捷克语 | 捷克语 |
Hu-HU | 匈牙利语 | 匈牙利语 |
Pl-PL | 波兰语 | 波兰语 |
Ro-RO | 罗马尼亚语 | 罗马尼亚语 |
hr-HR | 克罗地亚语 | 克罗地亚语 |
Sk-SK | 斯洛伐克语 | 斯洛伐克语 |
Sl-SI | 斯洛文尼亚语 | 斯洛文尼亚语 |
El-GR | 希腊语 | 希腊语 |
bg-BG | 保加利亚语 | 保加利亚语 |
Ru-RU | 俄语 | 俄语 |
Tr-TR | 土耳其语 | 土耳其语 |
en-GB | 英国英语 | 英国英语 |
Et-EE | 埃沙 | 爱沙尼亚语 |
lv-LV | 拉脱维亚语 | 拉脱维亚语 |
lt-LT | 立陶宛语 | 立陶宛语 |
pt-BR | 葡萄牙语(巴西) | 巴西语 |
zh-TW | 繁体中文 | 繁体中文 |
Ko-KR | 韩语 | 韩语 |
zh-CN | 简体中文 | 简体中文 |
ar-SA | 阿拉伯语 | 阿拉伯语 |
Th-TH | 泰语 | 泰语 |
示例
让我们尝试使用以下查询将字符串解析为datetime2日期时间类型 –
SELECT PARSE('THURSDAY, 23 february 2023' AS datetime2 USING 'zh-CN') AS Result;
输出
当我们执行以上查询时,输出如下 –
+------------------------------------+
| Result|
+------------------------------------+
| 2023-02-23 00:00:00.0000000 |
+------------------------------------+
示例
让我们看一下另一种情况,通过以下查询将字符串解析为datetime类型 –
SELECT PARSE('02/23/2023' AS DATETIME) AS Result;
输出
当我们执行上述查询时,输出结果如下所示 –
+------------------------------------+
| Result|
+------------------------------------+
| 2023-02-23 00:00:00.000 |
+------------------------------------+
示例
通过使用以下查询来将字符串解析为整数 –
SELECT PARSE('123.000' AS INT) AS Result;
输出
执行以上查询后,输出结果如下所示 –
+------------------------------------+
| Result|
+------------------------------------+
| 123 |
+------------------------------------+
示例
考虑以下示例,我们将通过运行以下查询将字符串解析为数值:
DECLARE @string AS VARCHAR(9)
SET @string = '56789'
SELECT PARSE(@string AS DECIMAL(8, 2)) AS decimalresult;
SELECT PARSE(@string AS MONEY) AS moneyresult;
输出
执行上述查询后,输出如下所示:
+-------------------+
| decimalresult |
+-------------------+
| 56789.00 |
+-------------------+
+-------------------+
| moneyresult |
+-------------------+
| 56789.00 |
+-------------------+
示例
让我们看看以下示例,我们将通过运行以下查询来处理NULL值:
SELECT PARSE(NULL AS INT) AS Result;
输出
上述查询的输出如下所示 −
Argument data type NULL is invalid for argument 1 of parse function.
示例
看看另一种情况,我们将NULL作为参数传递,并使用以下查询检查结果 −
DECLARE @txt AS VARCHAR(22);
SET @txt = NULL
SELECT PARSE(@txt AS INT) AS Result;
输出
如果我们编译并运行上面的查询,结果如下所示 −
+------------------------------------+
| Result|
+------------------------------------+
| NULL |
+------------------------------------+
示例
让我们看一个示例,使用parse()函数将字符串解析为日期,使用以下查询 −
SELECT PARSE('February/23/2023' AS date) AS Result;
输出
在执行上述查询时,将生成如下所示的输出结果 −
+------------------------------------+
| Result|
+------------------------------------+
| 2023-02-23 |
+------------------------------------+
示例
让我们来考虑另一个示例,我们将使用parse函数通过以下查询将其转换为数字类型 −
SELECT PARSE('1,2,3,4,5' AS int) As Result;
输出
当查询被执行时,将生成如下所示的输出−
+------------------------------------+
| Result|
+------------------------------------+
| 12345 |
+------------------------------------+
示例
考虑以下示例,我们使用不同的文化进行解析,并通过以下查询检查结果−
SELECT PARSE('30,000' AS decimal(8,2) USING 'en-US') AS inEnglish ;
SELECT PARSE('30,000' AS decimal(8,2) USING 'fr-FR') AS inFrench;
输出
当我们执行上述查询时,结果如下−
+-------------------+
| inEnglish |
+-------------------+
| 30000.00 |
+-------------------+
+-------------------+
| inFrench |
+-------------------+
| 30.00 |
+-------------------+