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:返回任意值的表达式。

查询:

结果: