Apache AGE 运算符

运算符

字符串特定比较运算符

测试数据

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[]映射和列表下标
()函数调用
3STARTS WITH字符串的区分大小写前缀搜索
ENDS WITH字符串的区分大小写后缀搜索
CONTAINS字符串的区分大小写包含搜索
=~正则表达式字符串匹配
4-一元减号
5IN检查列表中是否存在元素
IS NULL检查值是否为NULL
IS NOT NULL检查值是否不为NULL
6^指数运算
7* / %乘法,除法和取余
8+ -加法和减法
9= <>用于关系=和≠的关系
< <=用于关系<和≤的关系
> >=用于关系>和≥的关系
10NOT逻辑非
11AND逻辑于
12OR逻辑或

 使用公有云服务

一些公有云的提供了免安装的数据库服务,无需自己部署。以MemFireCloud为例

直接连接

每个MemFire Cloud应用内置一个完整的Postgres数据库,你可以使用任何支持Postgres的工具来连接到数据库。你可以在控制台内的数据库设置中获取连接信息:

  1. 来到左侧菜单栏的 设置部分
  2. 点击数据库
  3. 启用数据库直连
  4. 找到应用的连接信息

开启直连

白名单

MemFire Cloud内置白名单功能,开启白名单后,只允许白名单内的IP地址段访问你的数据库。关闭白名单后,访问你数据库的IP地址不受限制,即任何IP地址只要有连接信息都可以与你的数据库进行直连。 在进行白名单配置时,要遵循CIDR规则。MemFire Cloud中白名单功能 默认是关闭的,需用户手动开启。

配置白名单

通过数据库客户端连接数据库,可以执行图操作

CREATE EXTENSION age;
LOAD 'age';
SET search_path = ag_catalog, "$user", public;

  • 7
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值