TRY CAST可用,而TRY CONVERT不在SQL Server 2012中吗?

时间:2019-04-22 05:51:12

标签: sql-server sql-server-2012

我的服务器上装有SQL Server 2012(v11.0.5058.0(X64))。我注意到SSMS中出现了一个奇怪的问题。如果我写TRY_CAST,它会在工具提示中显示:

  

TRY_CAST无法识别为内置函数名称

并且智能感知确实适用于TRY_CONVERT

当我运行存储过程时:

它对于TRY_CAST成功执行,但对TRY_CONVERT抛出错误。

编辑: 以下是确切的声明:

DECLARE @var_val varchar(10) = 'test val' --in my case either a float value 
--like 4.2 or characters like **** , \&, ----  
DECLARE @float_val float = TRY_CAST(@var_val as float) -- works but ssms shows error 
--while typing
DECLARE @float_val_con float = TRY_CONVERT(float, @var_val) -- ssms provide intellisence 
--but execution gives error 

1 个答案:

答案 0 :(得分:3)

在此处检查,https://docs.microsoft.com/en-us/sql/t-sql/functions/try-cast-transact-sql?view=sql-server-2017它表示TRY_CAST不是新的保留关键字,并且在所有兼容级别中都可用

这意味着TRY_CAST将对所有人有效,但是TRY_CONVERT(https://docs.microsoft.com/en-us/sql/t-sql/functions/try-convert-transact-sql?view=sql-server-2017)仅对110有效。

ALTER DATABASE database_name SET COMPATIBILITY_LEVEL = 110

这一定会解决这个问题!