【Mysql数据库系列】update执行报错:ERROR 1292 (22007): Truncated incorrect DOUBLE value: ‘80%‘

╰+哭是因爲堅強的太久メ 2024-03-22 11:14 206阅读 0赞

1、问题描述

今天在执行一条更新的sql的时候,发生了如下报错:

  1. ERROR 1292 (22007): Truncated incorrect DOUBLE value: '80%'

sql如下:

  1. UPDATE tableName set limited_price = '' where ***_type <> 2 and limited_price > 0;

limited_price 字段是 varchar 字符串类型。

一开始很诧异,因为通过相同的查询条件,是可以查出数据的,查询sql如下:

  1. select ***_id,***_type,limited_price from tableName ttoo where ***_type <> 2 and limited_price > 0;

查询结果如下:

a822b2a37cfd4e02aed9714ab3307cd7.png

既然能查询,但是不知道为啥update时,却会报错,但是看提示,是说字段类型错误!!!


2、解决方式

将sql调整为如下,即可解决报错:

  1. 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类型来处理,就可以执行通过啦!!!

发表评论

表情:
评论列表 (有 0 条评论,206人围观)

还没有评论,来说两句吧...

相关阅读