TRY_CONVERT (Transact-SQL)
返回转换为指定数据类型的值(如果转换成功);否则返回 Null。
语法
TRY_CONVERT ( data_type [ ( length ) ], expression [, style ] )
参数
data_type [ ( length ) ]
要将 expression 转换到的数据类型。expression
要转换的值。style
一个可选的整数表达式,指定 TRY_CONVERT 函数如何转换 expression。style 接受与 CONVERT 函数的 style 参数相同的值。 有关详细信息,请参阅 CAST 和 CONVERT (Transact-SQL)。
可接受值的范围由 data_type 的值确定。 如果 style 为 null,则 TRY_CONVERT 返回 null。
返回类型
返回转换为指定数据类型的值(如果转换成功);否则返回 Null。
注释
TRY_CONVERT 将采用传递给它的值,并将该值转换为指定的 data_type。 如果转换成功,TRY_CONVERT 按指定的 data_type 返回值;如果发生错误,则返回 null。 但是,如果您请求的转换不是显式允许的,则 TRY_CONVERT 失败并显示错误。
TRY_CONVERT 是一个新的关键字,兼容级别为 110。
此功能可以在某个 SQL Server 2012 版本以及更高版本的服务器上远程执行。 但在 SQL Server 2012 之下的服务器版本中无法远程执行。
示例
A.TRY_CONVERT 返回 null
下面的示例演示转换失败时 TRY_CONVERT 返回 null。
SELECT
CASE WHEN TRY_CONVERT(float, 'test') IS NULL
THEN 'Cast failed'
ELSE 'Cast succeeded'
END AS Result;
GO
下面是结果集:
Result
------------
Cast failed
(1 row(s) affected)
以下示例演示表达式必须采用预期的格式。
SET DATEFORMAT dmy;
SELECT TRY_CONVERT(datetime2, '12/31/2010') AS Result;
GO
下面是结果集:
Result
----------------------
NULL
(1 row(s) affected)
B.TRY_CONVERT 将失败,并出现错误
下面的示例演示明确不允许转换时 TRY_CONVERT 返回错误。
SELECT TRY_CONVERT(xml, 4) AS Result;
GO
此语句的结果是一个错误,因为整数无法转换为 xml 数据类型。
Explicit conversion from data type int to xml is not allowed.
C.TRY_CONVERT 成功
此示例演示表达式必须采用预期的格式。
SET DATEFORMAT mdy;
SELECT TRY_CONVERT(datetime2, '12/31/2010') AS Result;
GO
下面是结果集:
Result
----------------------------------
2010-12-31 00:00:00.0000000
(1 row(s) affected)