SQL - TRY_CAST() 函式



SQL 的TRY_CAST() 函式是 SQL 中的轉換函式之一,類似於 CAST 函式。它用於在各種資料型別之間轉換表示式。它用於更改表示式的 資料型別。如果成功,SQL TRY CAST 將返回所選資料型別中的表示式。如果失敗,則返回 null。

處理不成功轉換的方式是 TRY CAST() 和 CAST() 函式之間的主要區別。CAST() 函式對失敗的轉換操作產生錯誤,而 TRY CAST() 返回 NULL。

語法

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

TRY_CAST ( expression AS data_type [ ( length ) ] )  

引數

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

  • expression - 要轉換的有效表示式。

  • datatype - 我們要將表示式轉換為的資料型別。

  • length - 用於定義任何目標資料型別的長度,因為它是整數型別的可選引數。

示例

讓我們嘗試使用以下查詢使用 TRY_CAST() 函式將字串轉換為十進位制:

SELECT TRY_CAST('123.45' AS DECIMAL(6, 2)) Result;

輸出

當我們執行上述查詢時,輸出如下所示:

+------------------------------------+
|                              Result|
+------------------------------------+
|                             123.45 |
+------------------------------------+

示例

在以下示例中,我們將使用GETDATE() 以及 TRY_CAST() 函式將日期和時間轉換為日期值,方法是使用以下查詢:

SELECT TRY_CAST(GETDATE() AS DATE) Result;

輸出

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

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

示例

考慮以下示例,我們將使用GETDATE() 以及 TRY_CAST() 函式將表示式轉換為 varchar,方法是使用以下查詢:

SELECT TRY_CAST(GETDATE() AS VARCHAR(22)) AS Result;

輸出

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

+------------------------------------+
|                              Result|
+------------------------------------+
|                Feb 23 2023 12:17PM |
+------------------------------------+

示例

讓我們看看另一種情況,我們將使用GETDATE() 以及 TRY_CAST() 函式將日期和時間轉換為時間值,方法是使用以下查詢:

SELECT TRY_CAST(GETDATE() AS TIME) Result;

輸出

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

+------------------------------------+
|                              Result|
+------------------------------------+
|                   11:57:20.3266667 |
+------------------------------------+

示例

檢視以下示例,我們將使用以下查詢將十進位制值轉換為 int:

SELECT TRY_CAST(112233.4455 AS int) AS Result;

輸出

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

+------------------------------------+
|                              Result|
+------------------------------------+
|                             112233 |
+------------------------------------+

示例

讓我們看看以下示例,其中TRY_CAST() 函式在超出範圍時返回 NULL,方法是使用以下查詢:

SELECT TRY_CAST('TUTORIALSPOINT' AS int) AS Result;

輸出

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

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

示例

讓我們考慮另一個示例,我們將使用TRY_CAST() 函式與 case 一起執行以下查詢:

SELECT 
CASE WHEN TRY_CAST('TUTORIALSPOINT' AS int) IS NULL
 THEN 'CastFailed'  
    ELSE 'CastSucceeded'  
END AS Result;

輸出

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

+------------------------------------+
|                              Result|
+------------------------------------+
|                         CastFailed |
+------------------------------------+

示例

考慮以下示例,我們將使用以下查詢將表示式轉換為 money:

DECLARE @STR AS VARCHAR(22)
SET @STR = '12345'
SELECT TRY_CAST(@STR AS MONEY) AS Result; 

輸出

當我們執行上述查詢時,輸出如下所示:

+------------------------------------+
|                              Result|
+------------------------------------+
|                           12345.00 |
+------------------------------------+
sql-conversion-functions.htm
廣告

© . All rights reserved.