Cypher中的NULL和SQL中的NULL有一些不同,SQL中的NULL表示这个字段没有值,在建表的时候可以添加非控约束,而Cypher中的null表示某个节点没有这个这段属性。一个表示这个字段没有值,一个表示没有这个字段。Cypher中可以使用 is null 判断某个节点是否有某个字段属性。
null不同于其他类型值,不能直接使用 = 判断某个字段是否为null,同时 null = null 也是没有意义的,结果还是null。null is null返回true。需要注意的是并不是null参与的运算都为null,尤其是逻辑运算。
1、逻辑运算
x | y | x AND y | x OR y | x XOR y |
false | null | false | null | null |
true | null | null | true | null |
null | null | null | null | null |
2、in运算
return 3 in [] //返回false,并不是null
return 3 in [1,2,null] //返回null,并不是false
return null in [1,2,3] //返回null,并不是false
return null in [1,2,null] //返回null,并不是true
3、is运算
判断为null:x is null
判断非null:x is not null //注意不是 not is