我正在使用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 –
你能提供一些重现错误的示例记录吗?如果您可以包含字段的数据类型,这也会很有帮助。 –