mysql 1292 22001_mysql 1292 错误

执行如下sql,报了mysql 1292 错误码及描述:Truncated incorrect DOUBLE value ……

update act_code set status=3,`activeTime`=now() where id in(

select id from (

select id from act_code where status=0 and serialNo between 712600001060 and 712600001061

) t ) ;

先说正确的sql,如下:

update act_code set status=3,`activeTime`=now() where id in(

select id from (

select id from act_code where status=0 and serialNo between '712600001060' and '712600001061'

) t ) ;

看出区别来了吗?  只是在子查询中 between and 后的参数多了单引号

数据库中表 act_code 的serialNo字段是varchar类型

单独执行如下sql时(未加单引号),是没问题的

select id from act_code where serialNo between 712100000041 and 712100000068;

但是当放到单表更新子查询中(第一个sql),就报了mysql 1292 的错

而唯一的差别就是varchar字段作为条件语句时其参数没加单引号

所以,你懂的,其实不是mysql语法解析弱智

只是sql的规范,可能写顺手了就忘了写单引号造成的语法错误

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值