У меня есть следующий запрос, который бросает:SQL Server: оператор Case отображает Msg 8115, Ошибка арифметического переполнения преобразования VARCHAR в тип данных числовой
арифметическая ошибка переполнения преобразовывая VARCHAR к типу данных числовой.
Запрос:
Select
@Fee = Case
When IsNull(Fee, '') = '' Then 0.00
Else Fee
End
@Fee
имеет тип Money
и Fee
является Varchar
типа.
Я также наблюдаю, что для следующих типов данных в пункте Then
ошибка не отображается.
Select @Fee = Case When IsNull(Fee, '') = '' Then 1 Else Fee End
Select @Fee = Case When IsNull(Fee, '') = '' Then 1.0 Else Fee End
Таким образом, только для значений 0.00
или 0.0
в Then
статье я получаю сообщение об ошибке.
Я также протестировали с ниже запроса и работал отлично:
Select @Fee = Case When IsNull(Fee, '') = '' Then Cast(0.00 as money) Else Fee End
И еще интересно то, что, согласно данным мы имеем в таблице, Then
часть Case
заявления никогда не будет выполнена. Пожалуйста, помогите мне понять это поведение оператора Case
.
делает взнос на колонке? Если это так, пожалуйста, дайте образцы данных столбца сборов. – Dhaval
Да @Dhaval Fee - это столбец типа Varchar, и все, что у меня есть, есть значение 2 в столбце – PS078