将varchar转换为数据类型numeric的算术溢出错误?

时间:2011-09-22 01:03:53

标签: sql

SELECT CASE Price WHEN '' THEN 0.0 ELSE Price END FROM Table

如果价格为空,则返回0.0,但如果列有值,则会给出下面的错误

将varchar转换为数据类型为数字的算术溢出错误。

如何更改我的代码来处理这种情况?

1 个答案:

答案 0 :(得分:3)

SELECT CASE Price WHEN '' THEN 0.0 ELSE CAST(Price AS DECIMAL(...)) END FROM Table

隐式转换通常会采用最小的类型,因此当您达到更大的值时,它将失败。在CASE / ELSE中将您的值显式转换/转换为正确的类型。