Я использую SQL Server 2008 r2. Когда я запускаю свой запрос, я получаю «Арифметическое переполнение ошибки при преобразовании выражения в тип данных int». Я подозреваю, что проблема находится в той части, которая начинается с функции RIGHT. Вот весь запрос.TSQL String Конкатенация Ошибка арифметического переполнения
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. int только содержит числа + - 2,1 миллиарда. https://msdn.microsoft.com/en-us/library/ms187745.aspx –
Можете ли вы предоставить несколько примеров записей, которые воссоздают ошибку? Было бы также полезно, если бы вы могли включить типы данных для своих полей. –