web-dev-qa-db-ja.com

TRY_CONVERTがSQL Server 2012で失敗する

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.
_

そのため、元のエラーメッセージの先頭が欠けていましたが、なぜ表示されないのかさらに混乱しました。

16
user275683

関数を使用している特定のデータベースのデータベース互換性レベルが、データベースの_properties/options/compatibility level_の下でSQL Server 2012 (110)に設定されていることを確認します。

45
jpw

クエリを実行するデータベースを指定したことを確認してください。

use [Database_Name]
go    
>>>>query here <<<
go

私の場合、サーバーには互換性レベルの異なるさまざまなデータベースがいくつかありました。

1
Zapnologica