TRY CAST доступен, а TRY CONVERT отсутствует в SQL Server 2012? - PullRequest
0 голосов
/ 22 апреля 2019

У меня SQL Server 2012 (v11.0.5058.0 (X64)) на моем сервере.Я заметил странную проблему в SSMS.Если я пишу TRY_CAST, во всплывающей подсказке будет указано:

TRY_CAST не распознается как имя встроенной функции

, а intellisense работает для 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 Ответ

3 голосов
/ 22 апреля 2019

Проверьте здесь, 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

Это наверняка решит эту проблему!

...