2011-09-22 80 views
2
SELECT CASE Price WHEN '' THEN 0.0 ELSE Price END FROM Table 

如果价格空,则返回0.0,但如果列具有价值它给了我下面将varchar转换为数据类型数值的算术溢出错误?

算术溢出错误转换VARCHAR数据类型的数字错误。

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

+0

什么数据类型是价格列? – Joe

+0

价格栏是十进制的 – CodeHunter

+0

那么它怎么能等于一个空字符串呢?我不明白你的CASE声明。 – Joe

回答

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

隐式转换通常会采用最小的可能类型,所以当您遇到较大的值时将会失败。在CASE/ELSE中将您的值明确地转换/转换为正确的类型。

+0

它的工作原理,其中一些列的值为30.100000000000001,并且失败。有没有解决办法? – CodeHunter

相关问题