图数据库(七):Neo4j中Cypher语言where关键字

WHERE 用于为 MATCH,OPTIONAL MATCH 和 WITH 语句添加过滤条件,来源SQL语言。

限定条件WHERE

# 查询人名为”Peter“或者年纪大于30人名不为”Timothy“的人,或者人名既不为”Timothy“也不为”Peter"的人(进行过滤)
# 查询人名不为”Peter“或者年纪小于30人名为”Timothy“的人,或者人名既不为”Timothy“也不为”Peter"的人(进行过滤)
MATCH (n:Person)
WHERE n.name = 'Peter' XOR (n.age < 30 AND n.name = 'Timothy') OR NOT (n.name = 'Timothy' OR n.name = 'Peter')
RETURN n.name, n.age

对label进行过滤

# 对标签过滤
MATCH (n)
WHERE n:Person
RETURN n.name, n.age

# 与下面这个命令作用相同
MATCH (n:Person)
RETURN n.name, n.age

不固定属性的过滤

# 查询Person这个类型标签中age<30的人
with 'AGE' as propname
match (n:Person)
where n[toLower(propname)] < 30
return n.name, n.age

属性存在性校验

# 查询存在age属性的人,如果查询到了返回,查询不到没有任何返回信息
MATCH (n:Person)
WHERE exists(n.age)
RETURN n.name, n.age

# 查询存在age属性的人,不管能否查到都有返回信息(查询不到会返回包含key的空字典)
OPTIONAL MATCH (n:Person)
WHERE exists(n.age)
RETURN n.name, n.age

匹配字符串开头

MATCH (n:Person)
WHERE n.name STARTS WITH 'St'
RETURN n.name, n.age

匹配字符串结尾

MATCH (n:Person)
WHERE n.name ENDS WITH 'ter'
RETURN n.name, n.age

匹配字符串包含

MATCH (n:Person)
WHERE n.name CONTAINS 'ete'
RETURN n.name, n.age

NOT 的使用

MATCH (n:Person)
WHERE NOT n.name ENDS WITH 'y'
RETURN n.name, n.age

正则表达式的使用

# 正则匹配=~
MATCH (n:Person)
WHERE n.name =~ 'Tim.*'
RETURN n.name, n.agez


# 正则不区分大小写(?i)
MATCH (n:Person)
WHERE n.name =~ '(?i)AND.*'
RETURN n.name, n.age

根据null过滤

# 查询人名为“Peter",年龄为空的人(或者没有年龄属性的人)
MATCH (person:Person)
WHERE person.name = 'Peter' AND person.age IS NULL RETURN person.name
  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值