Select by varchar column with IN() part in condition and int value returns all rows

后端 未结 4 2124
感情败类
感情败类 2021-01-24 02:14

Can someone explain me why with that query:

SELECT * FROM `tags` WHERE (tag IN (\'willa-lentza\', 2016))

it return me all rows from tags<

4条回答
  •  醉酒成梦
    2021-01-24 02:31

    Interesting...i got this.

    mysql> select 'a' in (0, 'b');
    +-----------------+
    | 'a' in (0, 'b') |
    +-----------------+
    |               1 |
    +-----------------+
    1 row in set, 1 warning (0.00 sec)
    
    Warning (Code 1292): Truncated incorrect DOUBLE value: 'a'
    

    EDIT: actually i think I can exaplain this one. (because 0 is in the in list, mysql thinks the rest og the in list and also the left hand argument 'a' should all be numbers. Casting 'a' will result in 0, so this will intenally be seen as 0 in (0, 0)

    but I still can't explain the behavior of the OP

提交回复
热议问题