全部文档
当前文档

暂无内容

如果没有找到您期望的内容,请尝试其他搜索词

文档中心

操作符

最近更新时间:2025-11-11 16:29:40

本章节介绍 Cypher 查询语言中常用的 操作符(Operators),包括字符串、数值、布尔及集合等类型的运算与匹配规则。操作符用于在图查询中执行条件判断、数据筛选、字符串模式匹配及算术逻辑运算,是构建复杂查询语句的重要组成部分。

字符串操作

Cypher 提供多种字符串操作符,用于对字符串属性执行模式匹配、拼接、大小写转换等操作。

数据初始化

首先,创建示例数据:

SELECT * FROM cypher('graph_name', $$
CREATE (:Person {name: 'John'}),
       (:Person {name: 'Jeff'}),
       (:Person {name: 'Joan'}),
       (:Person {name: 'Bill'})
$$) AS (result agtype);

执行后,将在图中创建四个带有 Person 标签的节点,每个节点包含一个字符串属性 name

前缀匹配

使用 STARTS WITH 操作符可以对字符串执行区分大小写的前缀搜索。该操作符常用于匹配以特定字符串开头的属性值。

SELECT * FROM cypher('graph_name', $$
	MATCH (v:Person)
	WHERE v.name STARTS WITH "J"
	RETURN v.name
$$) AS (names agtype);

查询结果:

names

John

Jeff

Joan

3 rows

包含

对字符串执行区分大小写的包含搜索。

SELECT * FROM cypher('graph_name', $$
	MATCH (v:Person)
	WHERE v.name CONTAINS "o"
	RETURN v.name
$$) AS (names agtype);

查询结果:

names

John

Joan

2 rows

后缀匹配

对字符串执行区分大小写的后缀搜索。

SELECT * FROM cypher('graph_name', $$
	MATCH (v:Person)
	WHERE v.name ENDS WITH "n"
	RETURN v.name
$$) AS (names agtype);

查询结果:

names

John

Joan

2 rows

正则表达式

AGE 支持使用 =~ 操作符使用 POSIX 正则表达式。默认情况下 =~ 是区分大小写的。

基本字符串匹配

当没有给出特殊字符时,=~ 操作符的行为类似于 = 操作符。

SELECT * FROM cypher('graph_name', $$
	MATCH (v:Person)
	WHERE v.name =~ 'John'
	RETURN v.name
$$) AS (names agtype);

结果

names

John

1 rows

不区分大小写搜索

在字符串开头添加 (?i) 将使比较不区分大小写

SELECT * FROM cypher('graph_name', $$
	MATCH (v:Person)
	WHERE v.name =~ '(?i)JoHn'
	RETURN v.name
$$) AS (names agtype);

names

John

1 rows

点(.)通配符

. 操作符作为通配符匹配任何单个字符。

SELECT * FROM cypher('graph_name', $$
	MATCH (v:Person)
	WHERE v.name =~ 'Jo.n'
	RETURN v.name
$$) AS (names agtype);

names

John

Joan

2 rows

星(*) 通配符

字符后的 * 通配符将匹配前一个字符的 0 个或多个

SELECT * FROM cypher('graph_name', $$
	MATCH (v:Person)
	WHERE v.name =~ 'Johz*n'
	RETURN v.name
$$) AS (names agtype);

names

John

1 rows

加号(+) 操作符

  • 操作符匹配前一个字符的 1 个或多个。

SELECT * FROM cypher('graph_name', $$
	MATCH (v:Person)
	WHERE v.name =~ 'Bil+'
	RETURN v.name
$$) AS (names agtype);

返回结果:

names

Bill

1 rows

. 和 * 通配符一起使用

您可以一起使用 . 和 * 通配符来表示字符串的其余部分。

SELECT * FROM cypher('graph_name', $$
	MATCH (v:Person)
	WHERE v.name =~ 'J.*'
	RETURN v.name
$$) AS (names agtype);

names

John

Jeff

Joan

3 rows


操作符优先级(Operator Precedence)

Cypher 查询语言支持多种操作符,不同操作符具有不同的优先级(Precedence)。

当表达式中包含多个操作符时,系统将按照优先级顺序依次执行。

下表列出了各类操作符及其说明,优先级从高到低排列。

优先级

操作符

描述

1

.

属性访问(Property Access)。

2

[]

映射(Map)和列表(List)下标访问。

()

函数调用(Function Call)。

3

STARTS WITH

字符串前缀匹配(区分大小写)。

ENDS WITH

字符串后缀匹配(区分大小写)。

CONTAINS

字符串包含匹配(区分大小写)。

=~

正则表达式匹配。

4

-

一元负号(Unary Minus)。

5

IN

判断元素是否存在于列表中。

IS NULL

判断值是否为 NULL。

IS NOT NULL

判断值是否非 NULL。

6

^

指数运算(Exponentiation)。

7

*, /, %

乘法、除法、取余。

8

+, -

加法与减法。

9

=, <>

相等与不等判断(= / )。

<, <=

小于与小于等于。

>, >=

大于与大于等于。

10

NOT

逻辑非(Logical NOT)。

11

AND

逻辑与(Logical AND)。

12

OR

逻辑或(Logical OR)。


  • 当多个操作符具有相同优先级时,表达式从左到右依次求值。

  • 可使用括号 () 明确运算顺序,以提升查询的可读性与可维护性。

文档导读
纯净模式常规模式

纯净模式

点击可全屏预览文档内容
文档反馈