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 us_english 英語
de-DE Deutsch 德語
fr-FR Français 法語
ja-JP 日本語 日語
da-DK Dansk 丹麥語
es-ES Español 西班牙語
it-IT Italiano 義大利語
nl-NL Nederlands 荷蘭語
nn-NO Norsk 挪威語
pt-PT Português 葡萄牙語
fi-FI Suomi 芬蘭語
sv-SE Svenska 瑞典語
cs-CZ Čeština 捷克語
hu-HU magyar 匈牙利語
pl-PL polski 波蘭語
ro-RO română 羅馬尼亞語
hr-HR hrvatski 克羅埃西亞語
sk-SK slovenčina 斯洛伐克語
sl-SI slovenski 斯洛維尼亞語
el-GR ελληνικά 希臘語
bg-BG български 保加利亞語
ru-RU русский 俄語
tr-TR Türkçe 土耳其語
en-GB British 英式英語
et-EE eesti 愛沙尼亞語
lv-LV latviešu 拉脫維亞語
lt-LT lietuvių 立陶宛語
pt-BR Português (Brasil) 巴西葡萄牙語
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  |
+------------------------------------+

示例

讓我們嘗試使用以下查詢將字串解析為 int:

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   |
+-------------------+
sql-conversion-functions.htm
廣告
© . All rights reserved.