在SQL Server 2012(SP1)11.0.3401.0版本上,以下SQL语句失败
DECLARE @b VARCHAR(10) = '12312.2'
SELECT TRY_CONVERT(DECIMAL(10,2),@b)
错误信息
Msg 195, Level 15, State 10, Line 2
'DECIMAL' is not a recognized built-in function name.
但可以在SQL Server 2012(SP1)11.0.3393.0上正常运行
两台服务器的
TRY_PARSE()
都没有问题DECLARE @b VARCHAR(10) = '12312.2'
SELECT TRY_PARSE(@b AS DECIMAL(10,2))
更新:
经过进一步测试并尝试转换为不同类型后,得到了另一个不同的错误消息
DECLARE @b VARCHAR(10) = '12312'
SELECT TRY_CONVERT(INT,@b)
错误:
error: Msg 195, Level 15, State 10, Line 2
'TRY_CONVERT' is not a recognized built-in function name.
因此,最初的错误消息是未命中的,但是现在我更加困惑为什么它不存在。
最佳答案
检查您正在使用该函数的特定数据库的数据库兼容性级别是否已设置为SQL Server 2012 (110)
下的properties/options/compatibility level
。
关于sql - TRY_CONVERT在SQL Server 2012上失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22310486/