【问题标题】:MySql Select query returns record , when WHERE condition not true当 WHERE 条件不成立时,MySql Select 查询返回记录
【发布时间】:2012-11-05 15:48:25
【问题描述】:

即使条件不满足,MySQL 查询也会返回一条记录。

SELECT * FROM `orders` WHERE order_id = '10000R'

没有与此处给出的 WHERE 条件匹配的记录。 但是 MySQl 返回一条 order_id = 10000 的记录

看起来 WHERE 条件忽略了引号内的 alpha。 如果查询中有任何错误或者这是 MySql 错误,请帮助我

【问题讨论】:

    标签: mysql select conditional-statements


    【解决方案1】:

    MySql 表数据类型为 VARCHAR。 请更改您的数据类型。

    【讨论】:

      【解决方案2】:

      确保您的 order_id 字段不是整数或其他数字字段。如果是,它可能会忽略尾随的 alpha。

      MySQL integer comparison ignores trailing alpha characters

      【讨论】:

      • ... 这是您将获得的三个最快的相同答案。 :)
      【解决方案3】:

      我假设 order_id 是一个 int,并且 MySql 隐式转换 varchar '10000R' 以匹配列的数据类型,从而去除尾随的 'r'

      请参阅 MySql 文档中的“Type Conversion in Expression Evaluation”。

      【讨论】:

        【解决方案4】:

        order_id 可能是某种类型的整数字段。 MySQL 会将字符串 '1000R' 转换为整数 1000。这就是您要返回结果的原因。这不是错误。

        【讨论】:

          猜你喜欢
          • 2015-03-27
          • 1970-01-01
          • 2021-05-07
          • 1970-01-01
          • 1970-01-01
          • 2014-12-22
          • 2020-12-28
          • 2015-06-02
          相关资源
          最近更新 更多