MySQL为Source字段前置主机与主键路径时CONCAT函数报错求助
解决MySQL中CONCAT函数使用时的"Truncated incorrect DOUBLE value"错误
我的表结构如下:
ID Name Source 1 John first.jpg 2 Doe second.jpg 3 Mary third.jpg 4 Kurian four.jpg 我希望更新
Source字段,为其前置主机地址与主键,最终效果如下:
http://example.com/1/first.jpg
http://example.com/2/second.jpg
http://example.com/3/third.jpg
http://example.com/4/four.jpg我尝试使用语句
CONCAT(" http://example.com/ "+id,Source),但出现错误:Truncated incorrect DOUBLE value,恳请各位提供解决建议。
嘿,这个错误的根源很简单——你误用了+运算符!在MySQL里,+是数值加法运算符,不是字符串拼接工具。当你把字符串"http://example.com/"和数值类型的id用+连在一起时,MySQL会尝试把字符串转换成数字,显然这个字符串转数字会失败,就抛出了Truncated incorrect DOUBLE value的错误。
正确的做法是全程使用CONCAT()函数来完成所有部分的拼接,它会自动把数值类型的id转换成字符串,完美处理不同类型的拼接需求。
你需要的UPDATE语句应该是这样的:
UPDATE your_table_name SET Source = CONCAT('http://example.com/', id, '/', Source);
这里有几个需要注意的细节:
- 用单引号包裹字符串常量(这是SQL的通用写法,比双引号更稳妥)
- 将
id直接作为CONCAT()的参数,函数会自动处理类型转换,不需要额外操作 - 把各个拼接单元拆成独立参数:主机地址、id、分隔用的斜杠、原
Source值
为了避免误操作,建议先执行SELECT语句验证拼接结果是否符合预期:
SELECT ID, Name, CONCAT('http://example.com/', id, '/', Source) AS updated_source FROM your_table_name;
确认输出和你想要的一致后,再执行UPDATE语句就没问题啦!
内容的提问来源于stack exchange,提问作者Aadi
相关产品推荐
相关产品推荐

