MySQL提示Truncated incorrect DOUBLE value解决方法
时间:2023-06-16 01:37:01
最近在使用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)";
-
///这是改正后的拼接方法
-
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最后一行查询为asql语句
where之后的查询条件之一是where BMDS = " examRegion " and BKZY = " examProfess " and SUBJECTS = " subjectCode "
一个是 BMDS = '" examRegion "' and BKZY = '" examProfess "' and SUBJECTS = '" subjectCode "'
区别在于第一个查询条件运行BMDS =第二个是001BMDS = '001'
假如这些查询条件字段是数字类型,那就没什么好说的了,但这里的字段都是字符类型,
在msql中,如果非要把数字当查询条件传给字符型,msql如果整个字段的前几个字符不能转换为数字,则截取该字段的前几个值作为查询条件,mysql这个警告就会出来Truncated incorrect DOUBLE value”。
总之,mysql查询时,数据库表中的字段是什么类型,最好在查询条件下传输。