3.4.2 标量函数
标量(Scalar)函数返回一个单值。Scalar图例如图3-24所示。
提示:length()和size()函数非常相似,因此弄清它们的区别就显得很重要。为了保持向后兼容,length()目前只适用于4种类型:字符串、路径、列表和模式表达式。然而,为了清晰起见,推荐仅仅在字符串和路径上使用length(),在列表和模式表达式上使用新的size()函数。length()在这些类型上的功能在将来可能被弃用。
图3-24 Scalar图例
3.4.2.1 size()
使用size()返回表中元素的个数。
语法:size(list)
参数:
● list:返回列表的表达式。
查询:
本查询返回了列表中元素的个数。
结果:
3.4.2.2 模式表达式的size
这里的size()的参数不是一个列表,而是一个模式表达式匹配到的查询结果集。计算的是结果集元素的个数,而不是表达式本身的长度。
语法:size(pattern expression)
参数:
● pattern expression:返回列表的模式表达式。
查询:
本查询返回了模式表达式匹配到的子图的个数。
结果:
3.4.2.3 length()
使用length()函数返回路径的长度。
语法:length(path)
参数:
● path:返回路径的表达式。
查询:
本查询返回路径p的长度。
结果:
3.4.2.4 字符串的长度
语法:length(string)
参数:
● string:返回字符串的表达式。
查询:
本查询返回了name为Charlie的长度。
结果:
3.4.2.5 type()
返回字符串代表的关系类型。
语法:type(relationship)
参数:
● relationship:一个关系。
查询:
本查询返回了关系r的关系类型。
结果:
3.4.2.6 id()
返回关系或者节点的id。
语法:id(property-container)
参数:
● property-container:一个节点或者关系。
查询:
本查询返回了5个节点的id。
结果:
3.4.2.7 coalesce()
返回表达式列表中的第一个非空的值。如果所有的实参都为空,则返回null。
语法:coalesce(expression [, expression]*)
参数:
● expression:表达式,可能返回null。
查询:
结果:
3.4.2.8 head()
head()返回列表中的第一个元素。
语法:head(expression)
参数:
● expression:返回列表的表达式。
查询:
结果将返回路径中的第一个节点。
结果:
3.4.2.9 last()
last()返回列表中的最后一个元素。
语法:last(expression)
参数:
● expression:返回列表的表达式。
查询:
结果将返回路径中的最后一个节点。
结果:
3.4.2.10 timestamp()
timestamp()返回当前时间与1970年1月1日午夜之间的差值,单位以毫秒计算。它在整个查询中始终返回同一个值,即使是在一个运行时间很长的查询中。
语法:timestamp()
参数:无
查询:
以毫秒返回当前时间。
结果:
3.4.2.11 startNode()
startNode()返回关系的开始节点。
语法:startNode(relationship)
参数:
● relationship:返回关系的表达式。
查询:
结果:
3.4.2.12 endNode()
endNode()返回关系的结束节点。
语法:endNode(relationship)
参数:
● relationship:返回关系的表达式。
查询:
结果:
3.4.2.13 properties()
properties()将实参转为属性值的map。如果实参是一个节点或者关系,返回的就是节点或关系的属性的map;如果实参已经是一个map了,那么原样返回结果。
语法:properties(expression)
参数:
● expression:返回节点、关系或者map的表达式。
查询:
结果:
3.4.2.14 toInt()
toInt()将实参转换为一个整数。字符串会被解析为一个整数,如果解析失败,将返回null。浮点数将被强制转换为整数。
语法:toInt(expression)
参数:
● expression:返回任意值的表达式。
查询:
结果:
3.4.2.15 toFloat
toFloat()将实参转换为浮点数。字符串会被解析为一个浮点数,如果解析失败,将返回null。整数将被强制转换为浮点数。
语法:toFloat(expression)
参数:
● expression:返回任意值的表达式。
查询:
结果: