Cypher查询格式

Cypher查询通过调用ag_catalog中的cypher函数构建,该函数将返回SETOF

Cypher()

cypher() 会执行传入的Cypher查询语句。

语法

cypher(graph_name, query_string, parameters)

参数说明

参数名称

描述

graph_name

Cypher查询的目标图。

query_string

需要执行的Cypher查询。

parameters

用于预处理语句的可选参数映射。默认为NULL。

说明
  • 即使Cypher查询没有返回结果,也需要定义记录结构。

  • 参数映射只能与预处理语句一起使用,否则将抛出错误。

返回值

将返回一组记录。

示例

SELECT * FROM cypher('graph_name', $$
/* 在此处编写 Cypher 查询 */
$$) AS (result1 agtype, result2 agtype);
说明

如果需要在Cypher函数中使用$$, 可写成以下格式

SELECT * FROM cypher('graph_name', $my_cypher$
/* 在此处编写包含 $$ 的 Cypher 查询 */
$my_cypher$) AS (result1 agtype, result2 agtype);

在表达式中的使用Cypher

Cypher不能用作表达式的一部分,应使用子查询代替。有关如何在表达式中使用Cypher查询的更多信息,请参见SQLCypher中的使用

SELECT子句

不允许在SELECT子句中直接调用Cypher作为独立列,但是可以使用Cypher作为条件的一部分。

不允许如下操作:

SELECT
    cypher('graph_name', $$
         MATCH (v:Person)
         RETURN v.name
     $$);

返回结果如下:

ERROR:  cypher(...) in expressions is not supported
LINE 3: 	cypher('graph_name', $$
        	^
HINT:  Use subquery instead if possible.