【问题标题】:Neo4j how to handle special characters like ” \ in Cypher statementsNeo4j 如何处理 Cypher 语句中的“\”等特殊字符
【发布时间】:2023-03-11 02:11:02
【问题描述】:

我正在使用 py2neo 将 JSON 数据作为 chyper 语句加载到 Neo4j 中。 我的问题是,有时我想作为属性导入节点的字符串中有“ ‘ \ 等符号:

MERGE (p:Node {name:’This sign ‘ gives error’})

如果我改为:

MERGE (p:Node {name:” This sign ‘ gives error”})

它适用于语句结束,但当 在输入字符串中时它将失败。

有没有办法说字符串中允许所有(或几乎所有)特殊字符? 对不起,如果这是一个愚蠢的问题:)

【问题讨论】:

    标签: neo4j cypher py2neo


    【解决方案1】:

    如果要包含双引号,可以用单引号括起来:

    CREATE (n:Node {name:'hello " world'}) 
    RETURN n.name
    
    n.name
    hello " world
    

    如果要包含单引号,可以用双引号括起来:

    CREATE (n:Node {name:"hello ' world"}) 
    RETURN n.name
    
    n.name
    hello ' world
    

    如果比这更复杂,你可以转义字符:

    CREATE (n:Node {name:"hello \" world"}) 
    RETURN n.name
    
    n.name
    hello " world
    

    您还可以通过转义反斜杠来包含它们:

    CREATE (n:Node {name:"hello \\ world"}) 
    RETURN n.name
    
    n.name
    hello \ world
    

    【讨论】:

    • 另外,不要忘记三单引号'''a 'quoted' word'''和三双引号"""another "quoted" word"""
    • @NigelSmall 如何让三引号起作用?当我尝试执行 MATCH (n:Test {id:'test'}) SET n.label = '''John Doe's house'''; 之类的操作时,我收到了 Neo.ClientError.Statement.InvalidSyntax 错误
    【解决方案2】:

    我建议使用参数,然后密码解析器看不到它们。

    它只是一个名称 -> 你通过字典传递给执行方法的字符串。

    【讨论】:

    • 我找不到。可以给个链接吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-09-09
    • 2010-11-19
    • 2013-08-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多