3.3.2 OPTIONAL MATCH语句
OPTIONAL MATCH语句用于搜索模式中描述的匹配项,对找不到的项用null代替。
3.3.2.1 简介
OPTINAL MATCH匹配模式与MATCH类似。不同之处在于,如果没有匹配到,OPTINAL MATCH将用null作为未匹配到部分的值。OPTINAL MATCH在Cypher中类似于SQL语句中的outer join。
记住,WHERE是模式描述的一部分,匹配的时候就会考虑到WHERE语句中的断言,而不是匹配之后才考虑。这对于有多个OPTINAL MATCH语句的查询尤其重要,一定要将属于MATCH的WHERE语句与MATCH放在一起。
OPTINAL MATCH图例如图3-6所示。
![](https://epubservercos.yuewen.com/84FE89/26581284601284906/epubprivate/OEBPS/Images/Figure-P139_88936.jpg?sign=1739224615-B0v0H5aCXITOwOOTn783SMe7Og8vIERg-0-cb12d477f93b881b8220d208f824fbce)
图3-6 OPTINAL MATCH图例
3.3.2.2 可选关系
如果某个关系是可选的,可使用OPTINAL MATCH。这非常类似SQL中outer join的工作方式。如果关系存在就返回,否则在相应的地方返回null。
查询:
![](https://epubservercos.yuewen.com/84FE89/26581284601284906/epubprivate/OEBPS/Images/Figure-P139_102594.jpg?sign=1739224615-I1cxRUP2NYOlmzON12YnWlAQ0fUtU8FE-0-a86e344be2052ce51023a58cb3e8db99)
结果返回了null,因为这个节点没有外向关系。
结果:
![](https://epubservercos.yuewen.com/84FE89/26581284601284906/epubprivate/OEBPS/Images/Figure-P140_101574.jpg?sign=1739224615-dE1riwcszYo5Y8IB3hQco6yUy8loQVK1-0-b638b9ca9f125cc540c5a4128dea198d)
3.3.2.3 可选元素的属性
如果可选的元素为null,那么该元素的属性也返回null。
查询:
![](https://epubservercos.yuewen.com/84FE89/26581284601284906/epubprivate/OEBPS/Images/Figure-P140_102596.jpg?sign=1739224615-ZN83dD7VtixRlJ9UEKIs7MlmXGlbadsK-0-dc2b740140c62558d03dbcd1be1269ba)
返回了x元素(查询中为null),它的name属性也为null。
结果:
![](https://epubservercos.yuewen.com/84FE89/26581284601284906/epubprivate/OEBPS/Images/Figure-P140_101577.jpg?sign=1739224615-rGRde6OGzO7uxqxZDG9G0yW90t58WoDo-0-517d27a47a03230921e55c1a40d994ed)
3.3.2.4 可选关系类型
可在查询中指定可选的关系类型。
查询:
![](https://epubservercos.yuewen.com/84FE89/26581284601284906/epubprivate/OEBPS/Images/Figure-P140_102597.jpg?sign=1739224615-QTDkbb9uWL3k53zoWyWdRGoUwEnrqKh3-0-c077c367a6a1d880fe14460bf7144473)
结果返回了null关系,因为该节点没有ACTS_IN的外向关系。
结果:
![](https://epubservercos.yuewen.com/84FE89/26581284601284906/epubprivate/OEBPS/Images/Figure-P140_101580.jpg?sign=1739224615-hJli1qdanO5oYpkv2VmGjwSuEmBuAoqc-0-22d10ead9d670cc0ce58de92bf8a32c6)