mysql:当具有条件的列具有NULL值时选择查询

nhhxz33t  于 2023-03-11  发布在  Mysql
关注(0)|答案(3)|浏览(145)

这是我的示例表:

CREATE TABLE test(
name VARCHAR(35),
age INT(3))

和一些值:

insert into test values ('alex', 13);
insert into test values ('dan', 17);
insert into test (name) values ('pete');
insert into test (name) values ('david');

当我对列“age”使用带有条件的SELECT查询时:

select * from test where age!=13;

我得到的结果是:

+------+------+
| name | age  |
+------+------+
| dan  |   17 |
+------+------+

但是我想要age!=13的所有记录,其中包括age为NULL的记录:

+-------+------+
| name  | age  |
+-------+------+
| dan   |   17 |
| pete  | NULL |
| david | NULL |
+-------+------+

我怎样才能得到我想要的?谢谢你的回复。

vd8tlhqk

vd8tlhqk1#

SELECT * FROM test WHERE age!=13 OR age IS NULL;

请记住,NULL实际上并不是一个值,而更像是一种状态。NULL = NULL作为NULL != NULL始终为false。无论您对NULL使用什么,它始终为false。因此,当它将age != 13计算为NULL != 13时,不显示该行是预期的行为。

hkmswyz6

hkmswyz62#

试试这个

select * from test where age !=13  or age is NULL;
g0czyy6m

g0czyy6m3#

使用<=>运算符。

SELECT 
  * 
FROM 
  test
WHERE
  NOT( age <=> 13 );

结果:

+-------+------+
| name  | age  |
+-------+------+
| dan   |   17 |
| pete  | NULL |
| david | NULL |
+-------+------+

相关问题