Incorrect DECIMAL value: ‘0‘ for column ‘‘ at row -1

用mysql插入数据的时候,报了上面的错误。

   语句类似:INSERT INTO t_aa(c1,c2,c3,a1,a2,a3) 
SELECT t1,t2,t3,b1,b2,b3
FROM
    (
    SELECT,  t1,t2,t3
       cast(ifnull(d1,'0')as decimal(8,1) b1,
      cast(ifnull(d2,'0') as decimal(8,1) b2,
     cast(ifnull(d3,'0')as decimal(8,1) b3

from tt) xx

d1,d2,d3是字符串类型

单独查询没问题,都有数据,b1,b2,b3都有数据,没有空值。d1,d2,d3的空值(是'',非null)都转成0.0了,把select语句插入insert后时就报错了。网上mysql中出现Incorrect DECIMAL value: '0' for column '' at row -1错误解决方案 - WKellyL - 博客园 (cnblogs.com)里的第二种 方法也试了,不管是用convert,cast还是round函数都没用。原以为是b1,b2,b3字段插入的问题,删掉了b1,b2,b3字段插入,还是报一样的错。

  最终发现是d1,d2,d3存在空串引起的,还是需要把空串转成数字0,而不仅仅是null传要转。

即 cast(if(a.score='' ,'0',a.score) AS DECIMAL(8,1) ) sc1。太Tm折腾。

  相信用文章里的第一种 方法早就解决了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值