mysql - SQL - 截断了不正确的 DOUBLE 值

标签 mysql sql

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

错误:

Warning: #1292 Truncated incorrect DOUBLE value: 'TITLE1_00'

Warning: #1292 Truncated incorrect DOUBLE value: 'TITLE2'

Warning: #1292 Truncated incorrect DOUBLE value: '_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)

补丁: 名称(varchar15)(15)

我已经尝试过:

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

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

有谁知道为什么会发生这种情况,以及解决方案是什么?

<小时/>

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

最佳答案

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

字符串连接的正确构造:

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

关于mysql - SQL - 截断了不正确的 DOUBLE 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55385169/

相关文章:

sql - 如何从表中获取第一个免费 ID

mysql - 带有日期和序列字段的 SQL 查询

php - 如何向用户发送账户充值通知,PHP+MySQL

php - 从数据库中按月和年选择日期

mysql - 如何在MySQL中通过json整数数组列内的id获取相关项目

mysql - 为什么 MySQL 允许 SELECT 查询中的非精确匹配?

sql - 如何在 Sqlite 中设置表来进行递归查询?

mysql - 如何在另一个查询中使用一个查询的结果

python - 如何使用 SQLAlchemy 将成批的条目提交到 SQL 数据库中以防止出错?

sql - 在 Oracle 中的 JSON_VALUE() 中传递动态 key