我正在使用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
奇怪的是,如果我註釋掉我的選擇條款的所有部分,除了有正確的函數開頭的行,結果如我所料。如果我註釋掉那條線並選擇其餘部分,結果如我所料。當我試圖一起選擇它時,它正在做一些我不明白的事情。預先感謝任何幫助瞭解解決此問題的方法。
那些看起來很大量。它可能與使用bigint而不是int一樣簡單。詮釋僅佔數字+ - 21億美元。 https://msdn.microsoft.com/en-us/library/ms187745.aspx –
你能提供一些重現錯誤的示例記錄嗎?如果您可以包含字段的數據類型,這也會很有幫助。 –