运算符
字符串特定比较运算符
测试数据
SELECT * FROM cypher('graph_name', $$
CREATE (:Person {name: 'John'}),(:Person {name: 'Jeff'}),(:Person {name: 'Joan'}),(:Person {name: 'Bill'})
$$) AS (result agtype);
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
Contains
对字符串执行区分大小写的包含搜索。
SELECT * FROM cypher('graph_name', $$MATCH (v:Person)WHERE v.name CONTAINS "o"RETURN v.name
$$) AS (names agtype);
结果
names
"John"
"Joan"
2 rows
Ends With
对字符串执行区分大小写的后缀搜索。
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);
结果
sqlCopy code
names
"John"
1 row
不区分大小写搜索
在字符串的开头添加(?i)将使比较不区分大小写。
sqlCopy code
SELECT * FROM cypher('graph_name', $$MATCH (v:Person)WHERE v.name =~ '(?i)JoHn'RETURN v.name
$$) AS (names agtype);
结果
sqlCopy code
names
"John"
1 row
.通配符
.运算符作为通配符,匹配任何单个字符。
sqlCopy code
SELECT * FROM cypher('graph_name', $$MATCH (v:Person)WHERE v.name =~ 'Jo.n'RETURN v.name
$$) AS (names agtype);
结果
sqlCopy code
names
"John"
"Joan"
2 rows
*通配符
字符后的*通配符将匹配前一个字符的0个或更多个。
sqlCopy code
SELECT * FROM cypher('graph_name', $$MATCH (v:Person)WHERE v.name =~ 'Johz*n'RETURN v.name
$$) AS (names agtype);
结果
sqlCopy code
names
"John"
1 row
+运算符
+运算符将匹配前一个字符的1个或更多个。
sqlCopy code
SELECT * FROM cypher('graph_name', $$MATCH (v:Person)WHERE v.name =~ 'Bil+'RETURN v.name
$$) AS (names agtype);
结果
sqlCopy code
names
"Bill"
1 row
.和*通配符结合在一起
您可以将.和*通配符结合在一起表示字符串的其余部分。
sqlCopy code
SELECT * FROM cypher('graph_name', $$MATCH (v:Person)WHERE v.name =~ 'J.*'RETURN v.name
$$) AS (names agtype);
结果
sqlCopy code
names
"John"
"Jeff"
"Joan"
2 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 | 逻辑或 |
使用公有云服务
一些公有云的提供了免安装的数据库服务,无需自己部署。以MemFireCloud为例
直接连接
每个MemFire Cloud应用内置一个完整的Postgres数据库,你可以使用任何支持Postgres的工具来连接到数据库。你可以在控制台内的数据库设置中获取连接信息:
- 来到左侧菜单栏的
设置
部分 - 点击
数据库
- 启用数据库直连
- 找到应用的
连接信息
开启直连
白名单
MemFire Cloud内置白名单功能,开启白名单后,只允许白名单内的IP地址段访问你的数据库。关闭白名单后,访问你数据库的IP地址不受限制,即任何IP地址只要有连接信息都可以与你的数据库进行直连。 在进行白名单配置时,要遵循CIDR规则。MemFire Cloud中白名单功能 默认是关闭的,需用户手动开启。
配置白名单
通过数据库客户端连接数据库,可以执行图操作
CREATE EXTENSION age;
LOAD 'age';
SET search_path = ag_catalog, "$user", public;