【问题标题】:MySql SELECT found row when WHERE doesn't match当 WHERE 不匹配时,MySql SELECT 找到行
【发布时间】:2022-06-10 17:06:43
【问题描述】:

我有一个非常简单的表,叫做角色:

当我运行SELECT * FROM roles WHERE role_id = "1ojosd041l"时(WHERE 子句显然与表中的任何行都不匹配)。它以某种方式返回了这个:

有人知道为什么会这样吗?我的猜测是我的 role_id 列是 int 类型,但是我将一个字符串传递给 WHERE 子句,所以 str 到 int 的转换产生了一些奇怪的东西(比如 0 或 1)。

我只是在寻找对此的官方解释。如果有人知道为什么会这样,请告诉我!谢谢!

【问题讨论】:

标签: mysql sql


【解决方案1】:

这里发生了一些 MySQL 魔法。 MySQL 看到 role_id 是数字。因此,它将您的字符串 '1ojosd041l' 转换为数字。这个字符串显然不是一个数字,MySQL 应该抛出一个错误。但是 MySQL 只取从字符串左侧找到的数字,所以它得到数字 1。(如果您的字符串以非数字开头,那么 MySQL 甚至会返回零。)

【讨论】:

    猜你喜欢
    • 2011-07-17
    • 2016-08-01
    • 2012-12-15
    • 2012-09-13
    • 1970-01-01
    • 2012-01-02
    • 1970-01-01
    • 2016-04-26
    相关资源
    最近更新 更多