SQL在Cypher中的使用

AGE不支持在Cypher中直接编写SQL。但可以通过定义自定义函数,编写SQL查询并在Cypher命令中调用它们。

创建函数

CREATE OR REPLACE FUNCTION public.get_event_year(name agtype) RETURNS agtype AS $$
	SELECT year::agtype
	FROM history AS h
	WHERE h.event_name = name::text
	LIMIT 1;
$$ LANGUAGE sql;

查询:

SELECT * FROM cypher('graph_name', $$
 MATCH (e:event)
 WHERE e.year < public.get_event_year(e.name)
 RETURN e.name
$$) as (n agtype);

返回结果如下:

 n 
-------------------
 "Apache Con 2021"
(1 row)