我的服务器上有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
检查这里,https://learn.microsoft.com/en-us/sql/t-sql/functions/try-cast-transact-sql?view=sql-server-2017 它说TRY_CAST不是一个新的保留关键字,并且在所有兼容级别中都可用
这意味着,TRY_CAST将适用于所有人,但TRY_CONVERT(https://learn.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
这肯定会解决这个问题!