Neo4j技术问询:查询属性值包含大写字母的所有节点
Neo4j查询属性包含大写字符的节点
不用结合CONTAINS和正则表达式,直接使用Neo4j的正则匹配运算符=~就能实现需求。
基础查询(匹配所有节点的name属性含ASCII大写字母)
MATCH (n) WHERE n.name =~ '.*[A-Z].*' RETURN n
- 正则说明:
.*匹配任意数量的任意字符,[A-Z]匹配A到Z之间的任意大写英文字母,整个表达式表示name属性值中至少包含一个大写字母。
优化查询(指定节点标签,提升性能)
如果知道目标节点的标签(比如Person),建议加上标签过滤,避免扫描全库节点:
MATCH (n:Person) WHERE n.name =~ '.*[A-Z].*' RETURN n
支持多语言大写字符的查询
如果需要匹配非英文的大写字符(比如中文拼音大写、希腊字母大写等),可以使用Unicode字符属性\p{Lu}(匹配任意大写字母),注意Cypher中反斜杠需要转义:
MATCH (n) WHERE n.name =~ '.*\\p{Lu}.*' RETURN n
内容的提问来源于stack exchange,提问作者nik
相关产品推荐
相关产品推荐

