字符串特定比较运算符
数据准备
SELECT * FROM cypher('graph_name', $$
CREATE (:Person {name: 'John'}),
(:Person {name: 'Jeff'}),
(:Person {name: 'Joan'}),
(:Person {name: 'Bill'})
$$) AS (result agtype);
前缀匹配
对字符串执行区分大小写的字符串前缀搜索。
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 row)
不区分大小写的搜索
在字符串开头添加(?i)
将使比较不区分大小写。
SELECT * FROM cypher('graph_name', $$
MATCH (v:Person)
WHERE v.name =~ '(?i)JoHn'
RETURN v.name
$$) AS (names agtype);
返回结果如下:
names
--------
"John"
(1 row)
通配符.
.
作为通配符匹配任何单个字符。
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 row)
操作符+
操作符+
匹配前面的字符出现1次或多次。
SELECT * FROM cypher('graph_name', $$
MATCH (v:Person)
WHERE v.name =~ 'Bil+'
RETURN v.name
$$) AS (names agtype);
返回结果如下:
names
--------
"Bill"
(1 row)
通配符.
和*
联合使用
可以将.
和*
通配符联合使用,用于表示字符串的其余部分。
SELECT * FROM cypher('graph_name', $$
MATCH (v:Person)
WHERE v.name =~ 'J.*'
RETURN v.name
$$) AS (names agtype);
返回结果如下:
names
--------
"John"
"Jeff"
"Joan"
(3 rows)
操作符优先级
AGE中的操作符优先级如下所示:
优先级 | 运算符 | 描述 |
优先级 | 运算符 | 描述 |
1 | . | 属性访问。 |
2 | [] | 映射和列表下标。 |
() | 函数调用。 | |
3 | STARTS WITH | 字符串前缀搜索(区分大小写)。 |
ENDS WITH | 字符串后缀搜索(区分大小写)。 | |
CONTAINS | 字符串包含搜索(区分大小写)。 | |
=~ | 正则表达式字符串匹配。 | |
4 | - | 一元减号。 |
5 | IN | 检查元素是否存在于列表中。 |
IS NULL | 检查值是否为NULL。 | |
IS NOT NULL | 检查值是否不为NULL。 | |
6 | ^ | 幂运算。 |
7 | * / % | 乘法、除法和取余。 |
8 | + - | 加法和减法。 |
9 | = <> | 关系运算符分别为=和≠。 |
< <= | 关系运算符分别为<和≤。 | |
> >= | 关系运算符分别为>和≥。 | |
10 | NOT | 逻辑非。 |
11 | AND | 逻辑与。 |
12 | OR | 逻辑或。 |
该文章对您有帮助吗?
- 本页导读 (1)
- 字符串特定比较运算符
- 数据准备
- 前缀匹配
- 包含
- 后缀匹配
- 正则表达式
- 不区分大小写的搜索
- 通配符.
- 通配符*
- 操作符+
- 操作符优先级