gpt4 book ai didi

不应该工作但返回所有表内容的 MySQL where 子句

转载 作者:行者123 更新时间:2023-11-29 04:46:11 26 4
gpt4 key购买 nike

此查询返回所有表内容。对我来说不是有效的 where 子句。有人知道为什么会这样吗?

SELECT * FROM TableName WHERE 1

最佳答案

在 MySQL 中,TRUE 是一个常数值 = 1,而 FALSE 是 = 0,那么您的查询等同于:

SELECT * FROM TableName WHERE TRUE

此外,所有条件都转换为 0 或 1:

SELECT 'a' = 'a'

将返回 1,而

SELECT 'a' = 'b'

将返回 0,因此例如以下查询都是等价的:

SELECT * FROM TableName WHERE TRUE
SELECT * FROM TableName WHERE 'a' = 'a'
SELECT * FROM TableName WHERE 1

但是每个值 <> 0 也被认为是真的,所以即使这样也会返回所有行:

SELECT * FROM TableName WHERE 2

但是如果一个值 <> 被认为是真的,人们会期望下面的查询起作用:

SELECT * FROM TableName WHERE 2 = TRUE

但这不会返回任何东西,因为 2 = 1。是的,有时 MySQL 有点奇怪。

关于不应该工作但返回所有表内容的 MySQL where 子句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18599542/

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