【问题标题】:MySQL - where condition with small intMySQL - where 条件与小 int
【发布时间】:2019-12-11 08:58:21
【问题描述】:

我的任务表的状态为 smallint(5)。它有 0 或 1 或 2 个值。

当我运行这个查询时,它会给我结果

 SELECT * FROM `tasks` WHERE  `status` = 'EMPTY' 

status 中没有 EMPTY 值,那我怎么才能得到结果呢?

【问题讨论】:

    标签: mysql string int


    【解决方案1】:

    隐式数据转换例如发生

    select cast('empty' as int); 
    
    +----------------------+
    | cast('empty' as int) |
    +----------------------+
    |                    0 |
    +----------------------+
    1 row in set, 1 warning (0.00 sec)
    

    恐怕这取决于你自己来比较喜欢和喜欢。

    【讨论】:

    • 你的意思是字符串'EMPTY'被转换为0?
    【解决方案2】:

    如果值只能是012,那么这应该会给出所有行的0 状态:

    SELECT *
    FROM tasks
    WHERE status = 0 
    

    如果有NULL 值,那么您可以通过将WHERE 更改为

    WHERE status IS NULL
    

    NULL0 不同,因此要同时获得两者,您需要这样做:

    WHERE status IS NULL OR status = 0
    

    【讨论】:

    • 为什么它给我status = 'EMPTY' 的结果,其中 EMPTY 是字符串,它不等于 0 或 1 或 2
    • 如果列是一个小整数,我不知道你怎么能有一个 EMPTY 的状态?
    猜你喜欢
    • 2014-08-11
    • 2018-02-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多