You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

求助:Neo4j大小写不敏感查询及单双引号转义实现方法

Neo4j大小写不敏感查询与引号转义处理

一、大小写不敏感查询实现

1. 字符串函数统一转换大小写

将属性值与查询条件统一转为小写(或大写),实现匹配:

// 精确匹配
MATCH (u:User)
WHERE lower(u.name) = lower('Mary')
RETURN u

// 模糊包含匹配
MATCH (u:User)
WHERE lower(u.name) CONTAINS lower('mar')
RETURN u

2. 创建大小写不敏感索引(Neo4j 4.0+)

创建索引时指定caseInsensitive参数,后续查询无需手动转换:

// 创建大小写不敏感索引
CREATE INDEX user_name_case_insensitive FOR (u:User) ON (u.name) OPTIONS {caseInsensitive: true}

// 直接查询,自动匹配任意大小写
MATCH (u:User)
WHERE u.name = 'Mary'
RETURN u

3. 全文索引匹配

全文索引默认支持大小写不敏感,适合模糊查询场景:

// 创建全文索引
CREATE FULLTEXT INDEX user_names FOR (u:User) ON EACH [u.name]

// 执行查询
CALL db.index.fulltext.queryNodes('user_names', 'mary') YIELD node, score
RETURN node

二、单引号与双引号的转义处理

1. 单引号转义

当字符串用单引号包裹时,将内容中的单引号重复两次即可转义(如处理mary's):

MATCH (u:User)
WHERE u.name = 'mary''s'
RETURN u

2. 双引号转义

若用双引号包裹字符串,内容中的双引号可通过重复两次转义:

MATCH (u:User)
WHERE u.name = "mary""s"
RETURN u

3. 参数化查询(推荐)

通过参数传递变量,无需手动转义,同时避免注入风险:

// Cypher脚本中使用参数
:param name => "mary's"
MATCH (u:User)
WHERE u.name = $name
RETURN u

以Python驱动为例:

from neo4j import GraphDatabase

driver = GraphDatabase.driver("bolt://localhost:7687", auth=("neo4j", "password"))
with driver.session() as session:
    result = session.run(
        "MATCH (u:User) WHERE u.name = $name RETURN u",
        name="mary's"
    )
    for record in result:
        print(record)

内容的提问来源于stack exchange,提问作者Fabricio Silva

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.23 04:36:18