关于oracle空值与某个字符串比较的问题

时间:2021-06-27 19:58:46
select * from t1 where f1!='aaa'

发现一个挺不符合逻辑的问题,如果f1为空,f1应该也符合不等于'aaa'的条件,结果f1为空的话,该条记录还是被干掉了,请问是怎么回事呢?

11 个解决方案

#1


NULL的多数操作结果都是NULL,而不是TRUE或FALSE。所以那句不会返回是NULL的记录。

#2


引用 1 楼 zbdzjx 的回复:
NULL的多数操作结果都是NULL,而不是TRUE或FALSE。所以那句不会返回是NULL的记录。


where null 可以作为条件?

#3


引用 2 楼 ahking 的回复:
Quote: 引用 1 楼 zbdzjx 的回复:

NULL的多数操作结果都是NULL,而不是TRUE或FALSE。所以那句不会返回是NULL的记录。


where null 可以作为条件?


表中的记录,通过where 后面的条件判断,通常返回三个结果:True、False、NULL,而最终要的,只是结果为True的记录,其他两个都过滤掉了。

#4


select * from t1 where f1!='aaa' or f1 is null;

#5


楼主 NULL不是任何东西,不能用于其他例如=、!=、>、<等比较,这些比较都会返回假。
NULL一般判断为is null和is not null。

#6


不是不符合逻辑,是你没理解null的概念

#7


空值不参与比较

#8


null 和空的问题。

#9


在数据库中空值与NULL是有区别的,在处理的时候要看清楚

#10


是在想要比较,就先用nvl函数把null转换为空字符串

#11


比较空值只能用IS NULL或IS NOT NULL。
标准SQL没学好啊,骚年。

#1


NULL的多数操作结果都是NULL,而不是TRUE或FALSE。所以那句不会返回是NULL的记录。

#2


引用 1 楼 zbdzjx 的回复:
NULL的多数操作结果都是NULL,而不是TRUE或FALSE。所以那句不会返回是NULL的记录。


where null 可以作为条件?

#3


引用 2 楼 ahking 的回复:
Quote: 引用 1 楼 zbdzjx 的回复:

NULL的多数操作结果都是NULL,而不是TRUE或FALSE。所以那句不会返回是NULL的记录。


where null 可以作为条件?


表中的记录,通过where 后面的条件判断,通常返回三个结果:True、False、NULL,而最终要的,只是结果为True的记录,其他两个都过滤掉了。

#4


select * from t1 where f1!='aaa' or f1 is null;

#5


楼主 NULL不是任何东西,不能用于其他例如=、!=、>、<等比较,这些比较都会返回假。
NULL一般判断为is null和is not null。

#6


不是不符合逻辑,是你没理解null的概念

#7


空值不参与比较

#8


null 和空的问题。

#9


在数据库中空值与NULL是有区别的,在处理的时候要看清楚

#10


是在想要比较,就先用nvl函数把null转换为空字符串

#11


比较空值只能用IS NULL或IS NOT NULL。
标准SQL没学好啊,骚年。