Мое приложение использует sql2000, и оператор select, который он использует, иногда не работает. Раз в неделю или около того, выбор возвращает ошибку
'Ошибка преобразования типа данных varchar в числовой'
SQL:
sum(case when ISNULL(form_prsn_id, -1) = irpd_prsn_id
then convert(dec(11,2), case when valu_value = ''
then '0'
else isnull
(valu_value,'0')
end)* case when
fmdt_deduction_flag = 'Y'
then -1
else 1
end
else 0
end) as client_sum
Поле valu_value является varchar и хранит некоторые числовые и некоторые varchar. Но включая мое присоединение и фильтр предложений where
всегда будет выбирать числовую или пустую строку.
Когда это терпит неудачу, я могу удалить СУММУ, видеть данные и знать, что это числовой.
Так почему же функция SUM иногда (скажем, 5% времени) дает сбой для числовых данных.
Интересно, будет ли SQL каким-то образом «смотреть в будущее», чтобы гарантировать, что он может преобразовываться в десятичную форму не только для строк, возвращаемых без суммы.
Примечание. Я обнаружил исправление, в которое я включаю (где isNumeric (valu_value) = 1)
Спасибо