SQL - TRY_PARSE() 函式



SQL 的TRY_PARSE()函式返回已轉換為指定資料型別的表示式的結果,如果轉換不成功則返回 NULL。它的功能與PARSE()函式基本相同,區別在於如果轉換失敗,它返回 NULL 而不是錯誤。這兩個函式的目標都是將字串值轉換為日期/時間或數字型別。

語法

以下是 SQL TRY_PARSE() 函式的語法:

TRY_PARSE ( string_value AS data_type [ USING culture ] )  

引數

此函式僅接受三個引數。下面描述了相同的內容:

  • string_value − 它是我們想要更改為特定資料型別的表示式。

  • data_type − 它是我們想要將string_value轉換成的的資料型別。

  • culture − 這是一個可選引數,用於格式化字串值的文化。

示例

在以下示例中,我們將使用 TRY_PARSE() 函式透過以下查詢將字串轉換為日期:

SELECT TRY_PARSE('23 February 2023' AS date) AS Result;

輸出

當我們執行上述查詢時,將獲得以下輸出:

+------------------------------------+
|                              Result|
+------------------------------------+
|                         2023-02-23 |
+------------------------------------+

示例

讓我們來看以下示例,我們將使用以下查詢將字串“ -1234”轉換為int:

SELECT TRY_PARSE('-1234' AS INT) AS Result;

輸出

當我們執行上述查詢時,將獲得以下輸出:

+------------------------------------+
|                              Result|
+------------------------------------+
|                             -1234  |
+------------------------------------+

示例

讓我們來看以下查詢,它返回 NULL 值,因為它無法將字串“TUTORIALSPOINT”轉換為int:

SELECT TRY_PARSE('TUTORIALSPOINT' AS INT) AS Result;

輸出

執行上述查詢後,將顯示以下輸出:

+------------------------------------+
|                              Result|
+------------------------------------+
|                               NULL |
+------------------------------------+

示例

考慮以下示例,我們將使用 TRY_PARESE() 函式以及 case 並執行以下查詢:

SELECT  
   CASE WHEN TRY_PARSE('TUTORIALSPOINT' AS decimal USING 'lv-LV') IS NULL  
      THEN 'True'  
      ELSE 'False'  
END  AS Result;

輸出

執行上述查詢後,將顯示以下輸出:

+-------------------+
|            Result |
+-------------------+
|        True       |
+-------------------+

示例

讓我們來看以下示例,我們將透過執行以下查詢將字串轉換為datetime:

SELECT TRY_PARSE('02/23/2023' AS DATETIME) AS Result;

輸出

上述查詢的輸出如下所示:

+------------------------------------+
|                              Result|
+------------------------------------+
|            2023-02-23 00:00:00.000 |
+------------------------------------+

示例

讓我們來看另一種情況,我們將使用以下查詢將字串轉換為datetime2:

SELECT TRY_PARSE('02/23/2023' AS datetime2) AS Result;  

輸出

執行上述查詢後,它將生成如下所示的輸出:

+------------------------------------+
|                              Result|
+------------------------------------+
|        2023-02-23 00:00:00.0000000 |
+------------------------------------+

示例

讓我們來看以下示例,我們將使用以下查詢將字串轉換為十進位制:

SELECT TRY_PARSE('1234' AS DECIMAL(8, 2)) AS Result;

輸出

如果我們編譯並執行上述查詢,則結果將如下所示:

+------------------------------------+
|                              Result|
+------------------------------------+
|                            1234.00 |
+------------------------------------+

示例

讓我們考慮另一個示例,我們將使用 IFF 語句來處理 NULL 值。當我們要插入記錄時,這將很有幫助。在我們的案例中,我們使用以下查詢檢查並將其替換為當前日期和時間:

SELECT IIF(
   TRY_PARSE('TUTORIALSPOINT' AS DATETIME) IS NULL, 
      GETDATE(), 
      'False'
) AS Result;

輸出

查詢執行後,將生成如下所示的輸出:

+------------------------------------+
|                              Result|
+------------------------------------+
|            2023-02-23 16:51:18.780 |
+------------------------------------+

示例

考慮以下示例,我們將使用 try_parse 以及文化引數,並使用以下查詢:

DECLARE @date AS VARCHAR(10)  
SET @date = '23/02/2023'  
SELECT TRY_PARSE(@date AS DATE USING 'da-DK') AS inDanish;

輸出

當我們執行上述查詢時,將獲得以下輸出:

+-------------------+
|         inDanish  |
+-------------------+
|       2023-02-23  |
+-------------------+
sql-conversion-functions.htm
廣告

© . All rights reserved.