MySQL提示Truncated incorrect DOUBLE value解决方法

本文探讨了在使用SpringMVC+JDBC进行数据库操作时遇到的“Truncated incorrect DOUBLE value”警告的原因及解决办法。通过调整SQL字符串拼接方式,确保字符型字段正确匹配查询条件,避免了MySQL对数字字符串的截断处理。

最近在使用springmvc+jdbc查询的工程中出现了这个问题,因为这种框架使用较少,我以为是我sql传参或者jdbc使用有问题,后来研究发现这不是mysql问题,是字符串拼接问题,

开始我的sql是这样的:

String sql = "update exam_" + examid + "_signup_sub 
             SET KD_ID =  " + examSiteCode + " 
            WHERE  SIGNUPID in 
            (SELECT a.SIGNUPID from 
            (select SIGNUPID from exam_" + examid + "_signup where BMDS = " + examRegion + " and BKZY = " + examProfess + " and SUBJECTS = " + subjectCode + ") a)";
  1. //这是改正后的拼接方式

  2. String sql = "update exam_" + examid + "_signup_sub 
                 SET KD_ID =  " + examSiteCode + "
                 WHERE  SIGNUPID in 
                  (SELECT a.SIGNUPID from 
                   (select SIGNUPID from exam_" + examid + "_signup where BMDS = '" + examRegion + "' and BKZY = '" + examProfess + "' and SUBJECTS = '" + subjectCode + "') a)";


看这个两个sql的最后一行查询为a的sql语句
where后的查询条件一个是 where BMDS = " + examRegion + " and BKZY = " + examProfess + " and SUBJECTS = " + subjectCode + "

一个是 BMDS = '" + examRegion + "' and BKZY = '" + examProfess + "' and SUBJECTS = '" + subjectCode + "'

       区别在于第一个查询条件运行出来是BMDS =001,第二个则是BMDS = '001'

如果这些查询条件字段就是数字类型,那没什么好说的,但是在这里的字段都是字符型,
在msql中,如果非要把数字当查询条件传给字符型,msql会截取该字段前几个可以转为数字的值来作为查询条件,如果整个字段的前几个字符都不能转为数字,mysql就会出这个警告“Truncated incorrect DOUBLE value”。
总之,mysql查询时,数据库表里的字段是什么类型,最好查询条件就传什么类型。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值