gpt4 book ai didi

MySQL WHERE 子句整数与字母字符的比较仍然是积极的?

转载 作者:行者123 更新时间:2023-12-01 00:37:10 25 4
gpt4 key购买 nike

当我通过以下方式搜索特定行时:

SELECT * FROM table WHERE id = '0003'

其中 id 列是一个 INT 主键字段,它返回 id = 3 的行

再次,如果我搜索:

SELECT * FROM table WHERE id = '3df'

它仍然返回 id = 3 的行

这真的很奇怪。为什么?

我的Mysql版本是5.7.14 community。

最佳答案

MySQL 在数字上下文中将字符串隐式转换为数字。

它通过转换前导数字并在第一个非数字处停止来实现。大多数数据库会返回类型转换错误。

道德?在进行此类比较之前,请始终确保类型兼容。如果愿意,您可以将其更改为明确的大小写:

where id = cast('3df' as unsigned)

在这种情况下,您将得到类型转换错误。

关于MySQL WHERE 子句整数与字母字符的比较仍然是积极的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46052876/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com