MySQL提示Truncated incorrect DOUBLE value解决方法

最近在使用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查询时,数据库表里的字段是什么类型,最好查询条件就传什么类型。

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
MySQL创建临时表时,如果出现了"Truncated incorrect DOUBLE value"的报错信息,这通常是由于在SQL语句中使用了错误的语法或操作引起的。根据引用的解决方法,可能会有两种原因导致此问题。 首先,如果在修改多个列的值时,各列之间使用了逗号连接而不是使用and进行连接,就会导致报错。例如,错误的写法示例是:`update user set col1=value1 and col2=value2 where col3=value3`,而正确的写法示例是:`update user set col1=value1, col2=value2 where col3=value3`。请确保使用逗号进行列值的分隔,而不是使用and。 其次,当在SQL语句中拼接字符串时,应该使用CONCAT()函数,而不是使用空格进行拼接。使用空格进行字符串拼接可能会导致报错。因此,请确保在拼接字符串时使用CONCAT()函数。这样可以避免"Truncated incorrect DOUBLE value"的报错信息。 综上所述,如果在MySQL创建临时表时出现了"Truncated incorrect DOUBLE value"的报错信息,您可以检查SQL语句是否正确使用了逗号进行列值的分隔,并且在拼接字符串时使用了CONCAT()函数。这样可以避免报错并正确创建临时表。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [MySQL提示Truncated incorrect DOUBLE value解决方法](https://blog.csdn.net/SoULikeMe/article/details/114638581)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* [MySQL报错:Truncated incorrect DOUBLE value: 原因伪分析](https://blog.csdn.net/qq_36018594/article/details/105357616)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值