我有一个表_users,字段id为bigint(24)。此查询的结果:
_users
id
bigint(24)
SELECT * FROM `_users` WHERE `id`='5text'
字符串是id = 5的行。我希望没有结果,因为'5text '* 不是一个数字。这怎么可能?
id = 5
ecfdbz9o1#
MySQL在计算表达式时隐式地将字符串转换为数字,以使操作数兼容。从文档中:如果其中一个参数是十进制值,则比较取决于另一个参数。如果另一个参数是十进制或整数值,则将参数作为十进制值进行比较,如果另一个参数是浮点值,则将参数作为浮点值进行比较。有关详细说明和示例,请参阅Type Conversion in Expression Evaluation文章。
1条答案
按热度按时间ecfdbz9o1#
MySQL在计算表达式时隐式地将字符串转换为数字,以使操作数兼容。
从文档中:
如果其中一个参数是十进制值,则比较取决于另一个参数。如果另一个参数是十进制或整数值,则将参数作为十进制值进行比较,如果另一个参数是浮点值,则将参数作为浮点值进行比较。
有关详细说明和示例,请参阅Type Conversion in Expression Evaluation文章。