私はSQL Server 2008 r2を使用しています。クエリを実行すると、式をデータ型intに変換する算術オーバーフローエラーが発生します。私は問題がRIGHT関数で始まる部分にあると思う。ここでは、全体のクエリです。TSQL文字列連結算術オーバーフローエラー
SELECT
'AA' + --BANK NUMBER
TDAccountNumber + --ACCOUNT NUMBER
' ' + --SECURITY NUMBER
' ' + --POSTING DATE
RIGHT('0000000000000' + CONVERT(VARCHAR(13),CONVERT(INT,ABS(A.PRINCIPALCASHBALANCE * 100))),13) + --INCOME CASH AMOUNT
'0000000000000' + --PRINCIPAL CASH AMOUNT
'640' + --TAX CODE
' ' + --REG CODE
' ' + --STATEMENT PRINT CODE
' ' + --SPACES
CASE
WHEN A.PRINCIPALCASHBALANCE > 0 THEN '[email protected]'
ELSE '[email protected]'
END + --TRAN CODE
CHAR(13) + CHAR(10) + --NEW LINE
'AA' + --BANK NUMBER
TDAccountNumber + --ACCOUNT NUMBER
' ' + --SECURITY NUMBER
'TRANSFER FROM PRINCIPAL TO INCOME ' + --DESCRIPTION
' ' + --SPACES
CASE
WHEN A.PRINCIPALCASHBALANCE > 0 THEN 'T4B'
ELSE 'T3B'
END --TRAN CODE
FROM
TableName
奇妙な部分は、私がRIGHT機能で始まる行を除いて、私のselect句のすべての部分をコメントアウトした場合、私は期待して、その結果であるということです。私がその行をコメントアウトして残りを選択すると、結果は私が期待した通りです。私はそれをすべて一緒に選択しようとすると、私がまだ理解していないことをしています。この問題を回避する方法を理解する助けを前もってありがとう。
かなり大きな数字のようです。 intの代わりにbigintを使うのと同じくらい簡単かもしれません。 intは、数字+21億を保持しています。 https://msdn.microsoft.com/en-us/library/ms187745.aspx –
フォルトを再作成するサンプルレコードをいくつか提供できますか?フィールドのデータ型を含めることもできれば便利です。 –