【Mysql数据库系列】update执行报错:ERROR 1292 (22007): Truncated incorrect DOUBLE value: ‘80%‘
1、问题描述
今天在执行一条更新的sql的时候,发生了如下报错:
ERROR 1292 (22007): Truncated incorrect DOUBLE value: '80%'
sql如下:
UPDATE tableName set limited_price = '' where ***_type <> 2 and limited_price > 0;
limited_price 字段是 varchar 字符串类型。
一开始很诧异,因为通过相同的查询条件,是可以查出数据的,查询sql如下:
select ***_id,***_type,limited_price from tableName ttoo where ***_type <> 2 and limited_price > 0;
查询结果如下:
既然能查询,但是不知道为啥update时,却会报错,但是看提示,是说字段类型错误!!!
2、解决方式
将sql调整为如下,即可解决报错:
UPDATE tableName set limited_price = '' where ***_type <> 2 and limited_price <> '';
具体原因:
因为limited_price字段,本身的字段类型是varchar类型的,即字符串类型。但可能因为我的第一个更新的过滤条件,使用了limited_price > 0 的操作,导致数据库将这个字段理解为了 DOUBLE 类型。所以此时,里面的有些值,比如 80% 这种,数据库就认为是不正常的 DOUBLE 类型数值了。于是,将过滤条件改成 limited_price <> ‘’,这时数据库还是将limited_price字段按照varchar类型来处理,就可以执行通过啦!!!
还没有评论,来说两句吧...