在 Cypher 中使用 SQL

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

注意!
仅支持 Void 和标量值函数。目前不支持返回集合的函数。

创建函数

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);

结果:

|      name       |
|-----------------|
|"Apache Con 2021"|
|(1 row)|