3.2.9 空值

3.2.9.1 空值介绍

空值null在Cypher中表示未找到或者未定义。对待null会与其他值有些不同,例如从节点中获取一个并不存在的属性将返回null。大多数以null作为输入的表达式将返回null。这包括WHERE语句中用于断言的布尔表达式。

null不等于null,两个未知的值并不意味着它们是同一个值。因此,null = null返回null,而不是true。

3.2.9.2 空值的逻辑运算

逻辑运算符包括AND、OR、XOR、IN、NOT,把null当作未知的三值逻辑值,AND、OR和XOR的逻辑值表如表3-2所示。

表3-2 空值与AND、OR和XOR的逻辑值表

3.2.9.3 空值与IN

IN运算符遵循类似的逻辑。如果列表中存在某个值,则结果返回true;如果列表中包含null值并且没有匹配到值,则结果返回null;否则结果为false。表3-3给出了空值与IN运算符一些例子。

表3-3 空值与IN运算符的例子

(续表)

All、any、none和single与IN类似,如果可以确切地计算结果,将返回true或者false,否则返回null。

3.2.9.4 返回空值的表达式

返回空值的表达式如下:

● 从列表中获取不存在的元素:[][0]、head([])。

● 试图访问节点或者关系的不存在的属性:n.missingProperty。

● 与null做比较:1 < null。

● 包含null的算术运算:1 + null。

● 包含任何null参数的函数调用:sin(null)。