【问题标题】:mysql select query gives result where ID (a number) is equal to textmysql select查询给出ID(数字)等于文本的结果
【发布时间】:2015-07-11 02:02:51
【问题描述】:

我有一个表_users,其中一个字段idbigint(24)

本次查询的结果:

SELECT * FROM `_users` WHERE `id`='5text'

id = 5 所在的行。我希望没有结果,因为 '5text' 不是数字。这怎么可能?

【问题讨论】:

  • 你想说什么?请详细说明。
  • 我理解这可能是个问题,因为它可以返回与查询的 id 无关的有效行

标签: mysql sql type-conversion


【解决方案1】:

MySQL 在计算表达式时隐式地将字符串转换为数字以使操作数兼容。

来自文档:

如果其中一个参数是十进制值,则比较取决于另一个参数。如果另一个参数是小数或整数值,则将参数作为十进制值进行比较,如果另一个参数是浮点值,则将其作为浮点值进行比较。

详细解释和示例请参见Type Conversion in Expression Evaluation 文章。

【讨论】:

    猜你喜欢
    • 2020-08-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多