SQL TRY CAST

SQL TRY CAST 函数或 TRY_CAST 函数是转换函数之一,它与 CAST 函数类似。它用于将一个表达式从一种数据类型转换为另一种数据类型。如果转换成功,TRY CAST 将返回所需数据类型的表达式。否则,它将返回 null。

如果 TRY_CAST 函数无法将表达式转换为所需数据类型,则此函数将返回 NULL。如果无法显式转换为所需数据类型,则会引发错误。在此 TRY CAST 演示中,我们将使用教程数据库中的 Employee 表。

Employee Table

SQL TRY CAST 函数语法

TRY_CAST 函数的语法是:

TRY_CAST (Expression AS Data_Type [(Length)])

-- For example
SELECT CAST (245 AS VARCHAR(50)) AS [result_name]
FROM [Source]
  • Expression:指定您希望转换的任何有效表达式。
  • Data_Type:指定您要将表达式转换为的数据类型
  • Length:这是一个可选的整数类型参数。您可以使用此参数指定目标SQL Server 数据类型的长度。

SQL TRY CAST 函数示例 1

TRY_CAST 函数可帮助您将任何表达式转换为所需的数据类型。下面的查询将显示使用此函数的多种方法。

DECLARE @str AS VARCHAR(50)
SET @str = '356789'
 
SELECT TRY_CAST(@str AS MONEY) AS Result; 
 
-- Direct Inputs
SELECT TRY_CAST('2345' AS DECIMAL(10, 2)) AS Result; 
 
SELECT TRY_CAST(123.456 AS VARCHAR(50)) AS Result; 
 
SELECT TRY_CAST('09/19/2017' AS DATETIME) AS Result;  
 
SELECT TRY_CAST('09/14/2017' AS DATETIME2) AS Result;
 
SELECT TRY_CAST(GETDATE() AS VARCHAR(30)) AS Result;

如您所见,它返回的结果与我们在 Cast 函数中获得的结果相同。我们已经在CAST 文章中解释了程序流程,请参考该文章。

SQL TRY CAST 2

TRY CAST 函数示例 2

在此示例中,我们将向您展示将错误的表达式和 NULL 值传递给 Try cast 函数时会发生什么。

SELECT TRY_CAST('19/14/2017' AS DATETIME2) AS Result;

SELECT TRY_CAST('Tutorial Gateway' AS INT) AS Result;

--Let me try the function with NULL value
SELECT TRY_CAST(NULL AS INT) AS Result;

从下面的屏幕截图可以看出,它为表达式返回 NULL。因为无法将它们转换为所需的数据类型。

TRY CAST Function 3

让我们看看如果我们尝试将 65(整数值)转换为 XML 数据类型会发生什么。如您所知,无法隐式或显式地将整数转换为 XML。因此,此函数将返回 Error 作为输出。

SELECT TRY_CAST(65 AS XML) AS Result;

执行 Try_cast 查询

Messages
-------
Msg 529, Level 16, State 2, Line 2
Explicit conversion from data type int to xml is not allowed.

SQL TRY CAST (TRY_CAST) 函数示例 3

在此示例中,我们将在 Employee 表上应用 TRY_CAST 函数。

SELECT [EmpID]
      ,[FirstName]
      ,[LastName]
      ,[Education]
      ,[Occupation]
      ,TRY_CAST([YearlyIncome] AS DECIMAL(10, 3)) AS [Yearly Income]
      ,TRY_CAST([Sales] AS INT) AS [Sales Amount]
      ,TRY_CAST([HireDate] AS DATETIME2) AS [Hire Date]
  FROM [Employee]
TRY CAST Function 5