关于 YMatrix
部署数据库
使用数据库
管理集群
最佳实践
高级功能
高级查询
联邦查询
Grafana 监控
备份恢复
灾难恢复
图数据库
管理手册
性能调优
故障诊断
工具指南
系统配置参数
SQL 参考
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 | [] | Map 和 List 下标 |
| () | 函数调用 | |
| 3 | STARTS WITH | 字符串区分大小写前缀搜索 |
| ENDS WITH | 字符串区分大小写后缀搜索 | |
| CONTAINS | 字符串区分大小写包含搜索 | |
| =~ | 正则表达式字符串匹配 | |
| 4 | - | 一元负号 |
| 5 | IN | 检查元素是否存在于列表中 |
| IS NULL | 检查值是否为 NULL | |
| IS NOT NULL | 检查值是否不为 NULL | |
| 6 | ^ | 幂运算 |
| 7 | * / % | 乘法、除法和取余 |
| 8 | + - | 加法和减法 |
| 9 | = <> | 关系运算 = 和 ≠ |
| < <= | 关系运算 < 和 ≤ | |
| > >= | 关系运算 > 和 ≥ | |
| 10 | NOT | 逻辑 NOT |
| 11 | AND | 逻辑 AND |
| 12 | OR | 逻辑 OR |