2014-01-06 3 views
2

У меня есть доступ db, подключенный к классической странице asp. Он должен добавить значение из 2 столбцов, но вместо добавления он объединяет данные вместе. Т.е. 1 + 1 показывает, как 11 не 2SQL SUM + Не работает как должно

SELECT (desc_1_amnt + desc_2_amnt) AS Sum 
FROM Sales_data 

Если я использую - знак или знак * он отлично работает. Кажется, что это не похоже.

+1

Каковы типы 'desc_1_amnt' и' desc_2_amnt'? Я предполагаю, что они имеют текстовый тип. –

+0

Это всего лишь числовые значения – user3166621

+0

Dave Zych спасибо. Тип данных был настроен на изменение текста на номер. – user3166621

ответ

1

Оператор + добавляет числовые значения, но объединяет строковые значения.

Вот пример из окна Immediate.

? 1 + 1 
2 
? "1" + "1" 
11 

Вероятное объяснение состоит в том, что ваши desc_1_amnt и desc_2_amnt поля текста типа данных. В этом случае перед добавлением их можно передать текстовые значения в номера.

SELECT (Val(desc_1_amnt) + Val(desc_2_amnt)) AS [Sum] 
1

Оператор + может быть либо arithmetic addition или string concatenation. Из вашего вопроса, похоже, что результат «11» означает, что типы данных представляют собой своего рода текст вместо числового.

Изменение столбцов на числовой тип должно давать ожидаемые результаты. В качестве альтернативы вы можете преобразовать текст в номера с помощью CAST or CONVERT.

Смежные вопросы