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 示例中,我们将展示传递错误表达式和 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。因为无法将它们更改为所需的数据类型。

让我们看看当我们尝试将 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]
