比较谓词¶
比较谓词比较两个值,并在比较为真时返回true,为假时返回false。在任一值为null时,返回null。
语法¶
- comparison_predicate
- comp_op
comparison_predicate ::=
comparison_predicand comp_op comparison_predicand
comp_op ::= '=' | '<>' | '<' | '>' | '<=' | '>='
参数¶
comparison_predicand¶
与另一个值进行比较的值。
进行比较的值必须是相同的值类型;否则,返回错误NR002,表示未定义的函数。
comp_op¶
用于比较两个值的运算符。
不同的值类型,可使用的运算符也不同。以下表列出了每种值类型可用的运算符:
| 值类型 | 运算符 | 描述 |
|---|---|---|
| 数值 | =, <>, <, >, <=, >= |
比较遵循数学规则。 |
| 字符串值 | =, <>, <, >, <=, >= |
比较基于字节的字典序。 |
| 布尔值 | =, <>, <, >, <=, >= |
比较遵循true大于false的规则。 |
| NULL 值 | =, <>, <, >, <=, >= |
任何与null值的比较都返回null。 |
| 时间点值 | =, <>, <, >, <=, >= |
比较基于时间顺序。 |
| 时间段值 | =, <>, <, >, <=, >= |
比较基于时间段长短。 |
| 列表值 | =, <> |
比较两个列表的元素是否相同。如果两个列表具有相同顺序的相同元素,则比较返回true,否则返回false。 |
| 集合值 | =, <> |
比较两个集合的元素是否相同。如果两个集合具有相同元素,则比较返回true,否则返回false。 |
| 映射值 | =, <> |
比较两个映射的键值对是否相同。如果两个映射具有相同的键值对,则比较返回true,否则返回false。 |
| 记录值 | =, <> |
比较两个记录的字段名和值是否相同。如果两个记录具有相同字段和相同字段值,则比较返回true,否则返回false。 |
| 图元素值 | =, <> |
比较两个图元素是否相同。如果两个图元素相同,则比较返回true,否则返回false。 |
| 路径值 | =, <> |
比较两个路径是否相同。如果两个路径相同,则比较返回true,否则返回false。 |
| 地理空间值 | =, <> |
比较两个地理空间值是否相同。如果两个地理空间值相同,则比较返回true,否则返回false。 |
示例¶
以下示例基于示例数据集。
比较字符串¶
LET l1= 'w55', l2='e34' RETURN l1 > l2 AS a
返回:
+------+
| a |
+------+
| true |
+------+
比较布尔值¶
RETURN (2>1) > (1>2) AS a, (2>1) <= (3>2) AS b
返回:
+------+------+
| a | b |
+------+------+
| true | true |
+------+------+
比较 NULL 值¶
'''
RETURN null > (1>2) AS a,
null >= 1 AS b,
null < "String" AS c,
null = LIST[1,2,3] AS d,
null < local_datetime("2012-03-04T05:06:07.0890") AS e,
null <> RECORD{} AS f
'''
返回:
+------+------+------+------+------+------+
| a | b | c | d | e | f |
+------+------+------+------+------+------+
| null | null | null | null | null | null |
+------+------+------+------+------+------+
比较列表值¶
LET l1= LIST[1,2,3], l2=LIST[1,2,3.5] RETURN l1 = l2 AS a
返回:
+-------+
| a |
+-------+
| false |
+-------+
比较时间点值¶
LET t1=local_datetime("2012-03-04T05:06:07.0890"), t2=local_datetime("2012-03-02T05:06:07.0") RETURN t1 > t2 AS a
返回:
+------+
| a |
+------+
| true |
+------+
比较时间段值¶
LET d1=duration({years:1, months:2}), d2=duration({years:1, months:3}) RETURN d1 < d2 AS a
返回:
+------+
| a |
+------+
| true |
+------+
比较记录值¶
LET r1 = {a:1, b:true, c:"str"}, r2 = {a:1, c:"str", b:true} RETURN r1 = r2 AS a
返回:
+------+
| a |
+------+
| true |
+------+
比较图元素值¶
'''
USE movie
MATCH (v1@Director)->(m1), (v2@Director)->(m2)
WHERE m1.name = "Saw III" AND m2.name = "Saw IV"
RETURN v1 = v2 AS a
'''
上述语句选择了电影"Saw III"和"Saw IV"的导演,并比较他们是否是同一个人。
返回:
+------+
| a |
+------+
| true |
+------+
比较路径值¶
'''
USE movie
MATCH p1 = (m1@Movie)<-(u1@`User`),
p2 = (m2@Movie)<-(u2@`User`)
WHERE u1.id = u2.id
RETURN p1 = p2 AS a, m1.name, m2.name
LIMIT 5
'''
上述语句选择了从相同用户开始并以电影结束的路径,并比较路径是否相同。
返回:
+-------+--------------------------------------------------------+--------------------------------------------------------+
| a | m1.name | m2.name |
+-------+--------------------------------------------------------+--------------------------------------------------------+
| false | Simpsons | Pirates of the Caribbean: The Curse of the Black Pearl |
| false | Simpsons | Harry Potter and the Philosopher's Stone |
| false | Simpsons | Pi |
| false | Pirates of the Caribbean: The Curse of the Black Pearl | Simpsons |
| false | Pirates of the Caribbean: The Curse of the Black Pearl | Harry Potter and the Philosopher's Stone |
+-------+--------------------------------------------------------+--------------------------------------------------------+
比较地理空间值¶
'''
LET l1= ST_GeogFromText ('POINT (34.0522 -18.2437) '),
l2=ST_GeogFromText ('POINT (34.0522 -18.2437) ')
RETURN l1 = l2 AS a, l1 <> l2 AS b
'''
返回:
+------+-------+
| a | b |
+------+-------+
| true | false |
+------+-------+
比较集合值¶
LET l1 = SET {1,2,3}, l2 = SET {1,2,3.5} RETURN l1 = l2 AS a, l1 <> l2 AS b
返回:
+-------+------+
| a | b |
+-------+------+
| false | true |
+-------+------+
比较映射值¶
LET m1 = MAP {'a':1, 'b':2}, m2 = MAP {'b':2, 'a':1, 'b': 3} RETURN m1 = m2 AS a, m1 <> m2 AS b
返回:
+------+-------+
| a | b |
+------+-------+
| true | false |
+------+-------+