gpt4 book ai didi

MySQL SELECT 查询假设 1623x=1623 为 True

转载 作者:行者123 更新时间:2023-12-02 19:14:09 25 4
gpt4 key购买 nike

有谁知道为什么这个查询返回了不应该返回的结果?查询中的代码有一个额外的 x,但数据库中的代码没有。

SELECT * FROM `otp` WHERE `code`= '1623x' AND `userid`='4' AND `status`='1'

enter image description here

提前致谢...

莫格斯

最佳答案

WHERE `code`= '1623x' 

我强烈怀疑 code 是一个数字列。

如果是这样:为了评估条件,MySQL 必须将数字与字符串进行比较。它的作用是将字符串强制转换为数字,然后进行数字比较。事实证明,字符串 '1623x' 会转换为数字 1623,因此满足条件。

例如,如果字符串是 'x1623',它将被转换为 0(因为它不以数字开头),并且您不会收到任何结果。

简而言之:不要比较不同数据类型的值。每个数据库对于这种情况下应该发生的情况都有自己的理解,这对您来说可能会也可能不直观。

关于MySQL SELECT 查询假设 1623x=1623 为 True,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63892583/

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