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

Sql server TRY CAST可用,而TRY CONVERT不在SQL Server 2012中?,sql-server,sql-server-2012,Sql Server,Sql Server 2012,我的服务器上有SQL Server 2012 v11.0.5058.0 X64。我注意到SSMS中存在一个奇怪的问题。如果我写TRY_CAST,它会在工具提示中显示: TRY\u CAST未被识别为内置函数名 而intellisense确实为TRY_CONVERT工作 运行存储过程时: 它为TRY\u CAST成功执行,但为TRY\u CONVERT抛出错误 编辑: 具体情况如下: DECLARE @var_val varchar(10) = 'test val' --in my case ei

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

TRY\u CAST未被识别为内置函数名

而intellisense确实为TRY_CONVERT工作

运行存储过程时:

它为TRY\u CAST成功执行,但为TRY\u 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 
检查这里,它说TRY_CAST不是一个新的保留关键字,在所有兼容级别都可用

也就是说,TRY\u CAST适用于所有人,但TRY\u CONVERT仅适用于110人

ALTER DATABASE database_name SET COMPATIBILITY_LEVEL = 110
这一定会解决这个问题

检查这里,它说TRY_CAST不是一个新的保留关键字,在所有兼容级别都可用

也就是说,TRY\u CAST适用于所有人,但TRY\u CONVERT仅适用于110人

ALTER DATABASE database_name SET COMPATIBILITY_LEVEL = 110

这一定会解决这个问题

如果运行“选择@@VERSION”;对于您的数据库,它会返回什么?正如我在上面发布的11.0.5058.0 X64。完整结果isMicrosoft SQL Server 2012-11.0.5058.0 X64 2014年5月14日18:34:29版权所有c Microsoft Corporation Enterprise Edition 64位Windows NT 6.3 Build 9600:Hypervisor\u CONVERT是110及更高兼容级别的保留关键字。通过触发这个查询来检查这一点:从sys.databases中选择compatibility_level,其中name='{databasename}';运行此命令,然后检查您的问题。如果运行SELECT@@VERSION,则更改数据库\u名称集兼容性\u级别=110;对于您的数据库,它会返回什么?正如我在上面发布的11.0.5058.0 X64。完整结果isMicrosoft SQL Server 2012-11.0.5058.0 X64 2014年5月14日18:34:29版权所有c Microsoft Corporation Enterprise Edition 64位Windows NT 6.3 Build 9600:Hypervisor\u CONVERT是110及更高兼容级别的保留关键字。通过触发这个查询来检查这一点:从sys.databases中选择compatibility_level,其中name='{databasename}';运行此命令,然后检查您的问题。ALTER数据库\u名称集兼容性\u级别=110