NebulaGraph执行含|的DELETE语句时出现`|`附近语法错误
Nebula Graph DELETE语句语法错误解决方案
问题原因
- 使用中文双引号:原语句中
[“1604715734952239104”]的引号为中文格式,Nebula仅识别英文引号,会触发语法解析错误。 - 错误使用管道符与结果引用:试图通过
|和$-.传递节点ID删除边的写法不符合Nebula语法规范,删除边应直接匹配目标边后执行操作。 - MATCH未明确边类型:未指定边的类型
REFERENCES_OBJECTID_PERM,易引发匹配歧义。
正确语句示例
推荐写法:直接匹配目标边删除
MATCH (o:HO_NEO4J_OBJECT_ID)-[r:REFERENCES_OBJECTID_PERM]-(a:HO_NEO4J_PERM) WHERE r.hoid IN ["1604715734952239104"] DELETE r;
可选写法:通过节点ID批量删除边
若需基于节点ID批量处理,可调整为符合Nebula管道语法的写法:
MATCH (o:HO_NEO4J_OBJECT_ID)-[r:REFERENCES_OBJECTID_PERM]-(a:HO_NEO4J_PERM) WHERE r.hoid IN ["1604715734952239104"] RETURN id(o) AS src, id(a) AS dst | DELETE EDGE REFERENCES_OBJECTID_PERM FROM $-.src TO $-.dst;
注意:若为无向边,需同时处理双向关联,避免遗漏。
内容的提问来源于stack exchange,提问作者黄凤仙
相关产品推荐
相关产品推荐

