【问题标题】:SQL - Truncated incorrect DOUBLE valueSQL - 截断不正确的 DOUBLE 值
【发布时间】:2019-03-27 19:33:17
【问题描述】:

我的 SQL 查询一直存在问题,经过各种尝试和研究后,我无法自行解决。

错误:

警告:#1292 截断不正确的 DOUBLE 值:'TITLE1_00'

警告:#1292 截断不正确的 DOUBLE 值:'TITLE2'

警告:#1292 截断不正确的 DOUBLE 值:'_00'

我的查询:

SELECT t1.titleid
FROM tmdb t1
LEFT JOIN patch t2
ON t1.titleid = t2.name + '_00'
WHERE t2.name IS NULL

结构:

tmdb: titleid(varchar)(15)

补丁: name(varchar15)(15)

我试过了:

name(varchar)(15)name(varchar)(9),我已将其更改为 15。

我已经在两个数据库的 phpmyadmin 中运行了查询。

有谁知道为什么会这样,解决办法是什么?


问题被标记为重复。链接帖子中的答案没有回答我的问题,因为此查询不同。正如这篇文章中提到的,我已经完成了研究并且已经看到了这篇文章!

【问题讨论】:

  • @UnhandledExcepSean 我看过这篇文章,这当然不能回答我的问题。该查询甚至与那里发布的内容都不接近。
  • 在将其标记为重复之前,请仔细检查帖子。
  • 这个 t2.name + '_00' 在 MySQL 中不起作用 CONCAT(t2.name , '_00')
  • @BerndBuffen 感谢您的帮助。这确实有效!

标签: mysql sql


【解决方案1】:

+ 是数字加法,而不是字符串连接...所以 MySQL 尝试将您的值转换为数字。没有更好的计划,它适用于DOUBLE(64 位浮点值)的后备类型。但由于您的字符串不能产生非常有说服力的数字,因此您会收到警告。

字符串连接的正确构造:

ON t1.titleid = CONCAT(t2.name, '_00')

【讨论】:

    【解决方案2】:

    那个 SQL 的意义何在?你能举一个你需要的数据和结果的例子吗?

    您尝试将“_00”添加到 null。是不是where子句错了?

    您是否尝试过 CONCAT(ifnull(t2.name,''),'_00') ?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-08-07
      • 2018-06-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-02-23
      相关资源
      最近更新 更多