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

聪明人

我在表格中只有一列,看起来像这样:

在此处输入图片说明

(field3为NULL。我使用QTODBC7.0执行SQL查询,并且此应用程序使NULL字段在查询结果中显示为空白,而不是显示文本“ NULL”)

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

select * from table where field3 <> 'randomstring'

我希望查询返回所有字段,其中field3不等于'randomstring'的值。

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

发生了一件奇怪的事情:

上面的查询什么都不返回!

在此处输入图片说明

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

我进行了一些测试,发现这是在field3为NULL时引起的,但不是在field3等于空字符串(不是NULL)时引起的。

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

我为巴克工作

此行为是由SQL标准的三值逻辑引起的。这意味着可以将每个布尔条件评估为truefalse或者unknown仅当条件为时才返回该行true定义为,如果NULL等式一侧(或两侧)都有值,则结果为unknown在您的情况下,条件的结果是unknown当field3为时NULL因此,您需要使用jarlh提出的解决方案:

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

在这样的查询中,条件被评估为truefield3的值是否为NULL,因为unknown or true = true

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

MySql Select查询返回错误结果

MySQL SELECT 查询返回错误的结果

使用where子句时,mysql select查询非常慢

使用 IN(SELECT....) mySQL 查询时没有返回结果

使用LEFT JOIN的MySQL查询不会返回空结果

为什么在使用WHERE子句时,MySQL的LEFT JOIN返回“ NULL”记录?

参数化的MySQL查询不会返回任何结果

MySQL:当引用外部表的列时,在 JOIN 的子查询中使用 WHERE 子句会出错

在where子句中使用SQL not in function时,结果集中不返回null值

在WHERE子句中使用子查询结果列时的未知列

使用WHERE子句时MySQL查询不会显示所有数据

MySQL从select *不返回结果,其中varchar =“”查询

在WHERE子句中使用<>(不相等)时,MySQL查询传递错误的结果

在SQL查询的'WHERE'子句中的'SELECT'中使用'IF'的结果

使用限制和偏移量的MySQL查询不会返回预期的有序结果

如果在 LEFT JOIN 和 WHERE 子句中找不到结果,如何在 MySQL 查询中返回 NULL 值

将查询放入存储过程中时,SQL Server将不会返回结果

MySQL查询不会返回所需的结果。没有订单的客户不显示

使用WHERE子句的MySQL LEFT JOIN查询

使用别名到where子句查询mysql

使用where子句的MySQL子查询

MySQL优化使用WHERE子句的子查询?

MYSQL查询Where子句意外的结果

从MySQL查询返回的分组结果

MySQL Where子句不返回任何结果

根据WHERE子句的结果返回列值

在where子句中使用sleep()时,MySQL查询花费的时间太长

当WHERE子句具有特殊字符时,LINQ查询不返回结果

即使未满足WHERE子句也从查询返回结果