未选择Oracle sql null值

sun*_*leo 9 sql oracle

在NAME表中,FIRST列具有null但未选择任何行.请帮我理解.

SELECT * FROM NAME WHERE FIRST != '1'
Run Code Online (Sandbox Code Playgroud)

das*_*ght 15

与任何比较null是假的- =<>,>,<,等等.您也不能nullIN列表中使用- 它将被忽略.而且,两个nulls 甚至彼此相等.

要获取空值,您需要明确地询问它们,如下所示:

SELECT * FROM NAME WHERE FIRST IS NULL OR FIRST != '1'
Run Code Online (Sandbox Code Playgroud)


Gor*_*off 10

与NULL的任何比较都返回NULL,这相当于FALSE.这是不平等的真实前夕.

如果要包含NULL值,请执行以下操作之一:

where first <> '1' or first is null
Run Code Online (Sandbox Code Playgroud)

要么

where coalesce(first, '<null>') <> '1'
Run Code Online (Sandbox Code Playgroud)