操作符

更新时间:2025-01-09 07:25:16

字符串特定比较运算符

数据准备

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)
  • 字符串特定比较运算符
  • 数据准备
  • 前缀匹配
  • 包含
  • 后缀匹配
  • 正则表达式
  • 不区分大小写的搜索
  • 通配符.
  • 通配符*
  • 操作符+
  • 操作符优先级
AI助理

点击开启售前

在线咨询服务

你好,我是AI助理

可以解答问题、推荐解决方案等