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.
_
そのため、元のエラーメッセージの先頭が欠けていましたが、なぜ表示されないのかさらに混乱しました。
関数を使用している特定のデータベースのデータベース互換性レベルが、データベースの_properties/options/compatibility level
_の下でSQL Server 2012 (110)
に設定されていることを確認します。
クエリを実行するデータベースを指定したことを確認してください。
use [Database_Name]
go
>>>>query here <<<
go
私の場合、サーバーには互換性レベルの異なるさまざまなデータベースがいくつかありました。