SQL TRY CONVERT

SQL TRY CONVERT 转换函数类似于 CONVERT 函数。它用于将表达式从一种数据类型转换为另一种数据类型。如果成功,它将返回所需数据类型中的表达式。

如果 TRY CONVERT 函数无法将表达式转换为所需的数据类型,则返回 NULL。如果无法显式更改所需的数据类型,则会引发错误。在此 Try Convert 中,我们将使用数据库中的 Employee 表。

SQL Server TRY CONVERT 语法

TRY CONVERT 函数的基本语法如下所示

TRY_CONVERT (Data_Type [(Length)], Expression, [Style])

-- For example
SELECT TRY_CONVERT (VARCHAR(50), 245) AS [result_name]
FROM [Source]
  • Data_Type:指定要更改表达式的数据类型
  • Length:这是一个可选的整数参数。使用此参数指定目标数据类型长度。
  • Expression:请指定您想要更改的任何有效表达式。
  • Style:这也是一个可选的整数类型参数。使用此SQL Server参数定义样式。

SQL TRY CONVERT 示例

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

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

在此 Try convert 示例中,我们将展示传递错误表达式和 NULL 值时会发生什么。

SELECT TRY_CONVERT(DATETIME, '15/19/2017') AS Result;  
 
SELECT TRY_CONVERT(INT, 'Tutorial Gateway') AS Result;

SELECT TRY_CONVERT(INT, NULL) AS Result;

可以看到,SQL Try convert 函数正在为表达式返回 NULL。因为无法将它们更改为所需的数据类型。

TRY CONVERT 2

让我们看看当我们尝试将 12 个整数转换为 XML 数据类型时会发生什么。如您所知,整数不能隐式或显式地转换为 XML。因此,此函数返回一个错误作为输出。

SELECT TRY_CONVERT(XML, 12) AS Result;

运行上面的查询

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

TRY_CONVERT 示例

在此示例中,我们将把 Sql Server TRY_CONVERT 函数应用于我们的 Employee 表。

SELECT [EmpID]
      ,[FirstName]
      ,[LastName]
      ,[Education]
      ,[Occupation]
      ,TRY_CONVERT(DECIMAL(10, 3), [YearlyIncome]) AS [Yearly Income]
      ,TRY_CONVERT(VARCHAR(50), [Sales], 1) AS [Sales Amount]
      ,TRY_CONVERT(DATETIME, [HireDate], 109) AS [Hire Date]
  FROM [Employee]
TRY CONVERT 4