Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 как исправить ошибку 8117 Operand data type varchar is invalid for sum operator.  [new]
tanya.avapu
Member

Откуда:
Сообщений: 19
Здравствуйте, подскажите, пожалуйста, как можно обойти эту ошибку?

Есть поле формата vharChar(2000), в нем идет запись значений в цифрах. По этому полю нужно просчитать сумму:

select Sum(A)
from table1
В итоге получаю ошибку 8117.
Пробовала использовать функции конвертации:
1. select SUM (convert(int,A))
from table1

В итоге Сообщение 245, уровень 16, состояние 1, строка 25
Conversion failed when converting the varchar value '1
' to data type int.

2. select SUM (Sum(isnull(cast(A as float),0)))
from table1

Сообщение 8114, уровень 16, состояние 5, строка 16
Error converting data type varchar to float.

Как корректно посчитать сумму? Заранее спасибо за помощь!
7 сен 15, 01:46    [18116730]     Ответить | Цитировать Сообщить модератору
 Re: как исправить ошибку 8117 Operand data type varchar is invalid for sum operator.  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 37155
tanya.avapu
Есть поле формата vharChar(2000), в нем идет запись значений в цифрах.
Вас кто-то обманул.
7 сен 15, 02:18    [18116745]     Ответить | Цитировать Сообщить модератору
 Re: как исправить ошибку 8117 Operand data type varchar is invalid for sum operator.  [new]
tanya.avapu
Member

Откуда:
Сообщений: 19
Гавриленко Сергей Алексеевич,
Нет, к сожелению. Поле называется Комментарий, но пользователь в него вносит числовое значение. И мне нужно его просуммировать.
7 сен 15, 02:23    [18116748]     Ответить | Цитировать Сообщить модератору
 Re: как исправить ошибку 8117 Operand data type varchar is invalid for sum operator.  [new]
felix_ff
Member

Откуда: Moscow
Сообщений: 1698
tanya.avapu,

IF OBJECT_ID('tempdb..#tmp_table') IS NOT NULL DROP TABLE #tmp_table
CREATE TABLE #tmp_table (value INT)

INSERT INTO #tmp_table (value)
  SELECT CAST(ISNULL(NULLIF(LTRIM(RTRIM(A)), ''), '0') AS INT)
  FROM table1
  WHERE A NOT LIKE '%[^0-9]%'

SELECT SUM(value) FROM #tmp_table


или
;WITH CTE (Value) AS (
  SELECT CAST(ISNULL(NULLIF(LTRIM(RTRIM(A)), ''), '0') AS INT)
  FROM table1
  WHERE A NOT LIKE '%[^0-9]%'
)
SELECT SUM(Value) FROM CTE
7 сен 15, 03:39    [18116760]     Ответить | Цитировать Сообщить модератору
 Re: как исправить ошибку 8117 Operand data type varchar is invalid for sum operator.  [new]
angel_zar
Member

Откуда: Барнаул
Сообщений: 902
select SUM (TRY_CAST(A AS INT))
from table1
7 сен 15, 06:58    [18116788]     Ответить | Цитировать Сообщить модератору
 Re: как исправить ошибку 8117 Operand data type varchar is invalid for sum operator.  [new]
Glory
Member

Откуда:
Сообщений: 104751
tanya.avapu
но пользователь в него вносит числовое значение.

И что/кто помешает ему внести туда нечисловое значение ?
7 сен 15, 08:09    [18116832]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить