gpt4 book ai didi

当对 NULL 列使用 WHERE 子句时,mySQL 选择查询不返回结果。

转载 作者:行者123 更新时间:2023-11-29 05:59:44 25 4
gpt4 key购买 nike

我在表格中有一列,如下所示:

enter image description here

(field3为NULL,我使用QTODBC7.0进行SQL查询,这个应用使得NULL字段在查询结果中显示为空白,而不是显示文本'NULL')

我有一个简单的 SQL 查询如下:

select * from table where field3 <> 'randomstring'

我希望查询返回 field3 不等于“randomstring”值的所有字段。

“field3”列不等于“randomstring”的值,因此应该在查询中返回它。

奇怪的事情发生了:

上面的查询没有返回任何内容!

enter image description here

field3 等于 NULL,因此它不等于 'randomstring' 因此,该行应该在我的查询中返回,但事实并非如此。

我做了一些测试,发现这是当 field3 为 NULL 而不是如果 field3 等于空字符串(不是 NULL)时引起的。

当 field3 中可能有 NULL 值时,如何使 select 语句起作用?

最佳答案

此行为是由作为 SQL 标准一部分的三值逻辑引起的。这意味着每个 bool 条件都可以评估为 truefalseunknown,并且仅当条件为 true 时才返回该行。它被定义为如果方程的一侧(或两侧)有一个 NULL 值,则结果为 unknown。在您的例子中,当 field3 为 NULL 时,条件的结果为 unknown。因此,您需要使用 jarlh 提出的解决方案:

SELECT * FROM table WHERE field3 <> 'randomstring' or field3 IS NULL

在这样的查询中,如果 field3 的值为 NULL,则条件被评估为 true,因为 unknown or true = true

关于当对 NULL 列使用 WHERE 子句时,mySQL 选择查询不返回结果。,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46049329/

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