###知りたいたいこと
SQL
1SELECT * FROM TABLE_A WHERE ID=0123456789012345678 2--※カラム[ID]は「varchar(18)」となっています。
この場合に、IDへの条件に上記のような文字列ではない数値「0123456789012345678」を指定すると
「varchar をデータ型 numeric に変換中に、算術オーバーフロー エラーが発生しました。」
が、発生します。
この時暗黙変換されて、「ID」が数値となっているかと思いますが、なぜエラーとなるのでしょうか?
数値の開始が「0」なため、暗黙変換時になにか特殊な変換がされるのでしょうか?
可能であれば、エラーの理由とカラム「ID」がどういった評価が内部的にされているのかを教えてください。
また暗黙変換される「ID」の評価値を確認する方法があれば教えてください。
尚、上記SQLは開始が「0」でなければ正常に結果を返却します。
※数値部分を文字列(''囲い)にすれば正常に動作することはわかります。
そうではなく、どういった評価がされているかが知りたいです。
###補足情報(言語/FW/ツール等のバージョンなど)
MicroSoft SQL Server 2012

回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。