【问题标题】:Can we make cypher field query Case-Insensitive我们可以使密码字段查询不区分大小写吗
【发布时间】:2019-05-20 20:06:06
【问题描述】:

它可能看起来与this 重复,但事实并非如此。我们可以根据字段使密码查询不区分大小写吗?我知道我们可以将正则表达式用于值,但我们需要基于字段。

例如

MATCH (c:customer) WHERE c.CUSTOMERNUMBER = '1088' RETURN c

以上查询返回结果,但以下不返回结果

MATCH (c:Customer) WHERE c.CustomerNumber = '1088' RETURN c

这里的标签 Customer 和属性 CustomerNumber 有不同的情况。

【问题讨论】:

    标签: neo4j cypher case-insensitive


    【解决方案1】:

    您可以使用 PROPERTIES 获取节点的地图表示,然后使用 KEYS 以便您可以迭代它们。因为“Name”、“NAME”和“Prop1”都是同样唯一的属性名称,就数据库而言,它们可以全部存在,也可以不存在。您将不得不迭代节点的每个属性以找到符合您的条件的字段。

    MATCH (n) 
    WHERE ANY(key in KEYS(n) WHERE lower(key)="name" AND n[key]="Neo") 
    RETURN n
    

    这比简单的不区分大小写更灵活,但也很昂贵。

    【讨论】:

    • 您可以将KEYS(PROPERTIES(n)) 替换为KEYS(n)
    • 感谢您的回答。但是有没有我们可以使用的任何配置设置。就像在 RDBMS 中一样,我们有 COLLATION
    • @Code_Mode 现在,Neo4j 没有这样的设置。尽管您可以做的另一件事是在将字段名称写入 Neo4j 之前对其进行标准化。
    • 是的,我们只这样做了。标准化字段和标签名称
    猜你喜欢
    • 2012-11-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-18
    • 1970-01-01
    相关资源
    最近更新 更多