ちょうど今、ストアドプロシージャを実行しているときにこのエラーが発生していました。
Arithmetic overflow error converting varchar to data type numeric.
そのエラーが発生した行を見つけました。これはその行のコードです。
SELECT @AF_MIN_3L = LEFT(MIN([A-F Est_CY]), 6) - 0.000001 FROM #Ent_AF_3
ストアドプロシージャの前半で、@ AF_MIN_3Lをデータ型FLOATとして宣言し、一時テーブル#Ent_AF_3を作成して、列[AFEst_CY]データ型をFLOATにしました。次のコードは非FLOAT値を作成していますか?
LEFT(MIN([A-F Est_CY]), 6) - 0.000001
私はそれが単純なキャストの問題であることを願っています、そして私がしなければならないのはこのようなものだけです:
LEFT(MIN(CAST([A-F Est_CY] AS FLOAT)), 6) - CAST(0.000001 AS FLOAT)
問題が修正されたことを確認せずに、手順全体を再度実行したくありませんでした。助けてくれてありがとう。
文字列関数を使用するLEFT
と、つまり、文字列値が返されます。ここで説明するように、LEFT
関数の戻りデータ型は実際にVARCHAR
またはを返しNVARCHAR
ます。したがって、理想的には、CAST
またはにCONVERT
戻るFLOAT
必要があります。もちろんFLOAT
、LEFT
関数のAFTERに戻す必要があるため、CAST(LEFT(...)as FLOAT)になります。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加