函数
Cypher中的函数如果输入参数为null,则返回null。
以字符串作为输入的函数都对Unicode字符进行操作,而不是对标准字符进行操作。例如,size()函数应用于任何Unicode字符将返回1,即使该字符不适合一个字符的16位。
可以通过 SHOW FUNCTIONS
查看函数定义。
函数签名中参数格式:eg:
all(variable :: VARIABLE //:: VARIABLE,说明是个变量,可用于后面的 WHERE 部分IN
list :: LIST OF ANY? //list,是个LIST泛型。
WHERE predicate :: ANY? // predicate,是任意的断言
)
:: (BOOLEAN?) //函数返回值类型为BOOLEAN
断言函数
Function Signature Description all()
all(variable :: VARIABLE IN list :: LIST OF ANY? WHERE predicate :: ANY?) :: (BOOLEAN?)
Returns true if the predicate holds for all elements in the given list. any()
any(variable :: VARIABLE IN list :: LIST OF ANY? WHERE predicate :: ANY?) :: (BOOLEAN?)
Returns true if the predicate holds for at least one element in the given list. exists()
exists(input :: ANY?) :: (BOOLEAN?)
Returns true
if a match for the pattern exists in the graph. isEmpty()
isEmpty(input :: LIST? OF ANY?) :: (BOOLEAN?)
Checks whether a list is empty. isEmpty()
isEmpty(input :: MAP?) :: (BOOLEAN?)
Checks whether a map is empty. isEmpty()
isEmpty(input :: STRING?) :: (BOOLEAN?)
Checks whether a string is empty. none()
none(variable :: VARIABLE IN list :: LIST OF ANY? WHERE predicate :: ANY?) :: (BOOLEAN?)
Returns true if the predicate holds for no element in the given list. single()
single(variable :: VARIABLE IN list :: LIST OF ANY? WHERE predicate :: ANY?) :: (BOOLEAN?)
Returns true if the predicate holds for exactly one of the elements in the given list.
标量函数
Function Signature Description coalesce()
coalesce(input :: ANY?) :: (ANY?)
返回第一个非null值。 endNode()
endNode(input :: RELATIONSHIP?) :: (NODE?)
Returns the end node of a relationship. head()
head(list :: LIST? OF ANY?) :: (ANY?)
Returns the first element in a list. id()
id(input :: NODE?) :: (INTEGER?)
Deprecated Returns the id of a node. Replaced by elementId()
id(input :: RELATIONSHIP?) :: (INTEGER?)
Deprecated Returns the id of a relationship. Replaced by elementId()
. last()
last(list :: LIST? OF ANY?) :: (ANY?)
length()
length(input :: PATH?) :: (INTEGER?)
Returns the length of a path. properties()
properties(input :: MAP?) :: (MAP?)
返回一个对象的所有属性,作为一个map properties(input :: NODE?) :: (MAP?)
返回一个节点的所有属性,作为一个map properties(input :: RELATIONSHIP?) :: (MAP?)
返回一个关系的所有属性,作为一个map randomUUID()
randomUUID() :: (STRING?)
size()
size(input :: LIST? OF ANY?) :: (INTEGER?)
Returns the number of items in a list. size(input :: STRING?) :: (INTEGER?)
Returns the number of Unicode characters in a string. startNode()
startNode(input :: RELATIONSHIP?) :: (NODE?)
toBoolean()
toBoolean(input :: STRING?) :: (BOOLEAN?)
toBoolean(input :: BOOLEAN?) :: (BOOLEAN?)
toBoolean(input :: INTEGER?) :: (BOOLEAN?)
toBooleanOrNull()
toBooleanOrNull(input :: ANY?) :: (BOOLEAN?)
转换为boolean,不能转换返回null。 toFloat()
toFloat(input :: NUMBER?) :: (FLOAT?)
toFloat(input :: STRING?) :: (FLOAT?)
toFloatOrNull()
toFloatOrNull(input :: ANY?) :: (FLOAT?)
转换为小数,不能转换返回null。 toInteger()
toInteger(input :: NUMBER?) :: (INTEGER?)
toInteger(input :: BOOLEAN?) :: (INTEGER?)
toInteger(input :: STRING?) :: (INTEGER?)
toIntegerOrNull()
toIntegerOrNull(input :: ANY?) :: (INTEGER?)
转换为整形,不能转换返回null。 type()
type(input :: RELATIONSHIP?) :: (STRING?)
Returns the string representation of the relationship type.
示例
CREATE (p:Person {name: 'Stefan', city: 'Berlin'})
RETURN properties(p)
//OUT PUT:
//: {"city":"Berlin","name":"Stefan"}
聚合函数
Function Signature Description avg()
avg(input :: DURATION?) :: (DURATION?)
avg(input :: FLOAT?) :: (FLOAT?)
avg(input :: INTEGER?) :: (INTEGER?)
collect()
collect(input :: ANY?) :: (LIST? OF ANY?)
收集数据作为一个LIST。 count()
count(input :: ANY?) :: (INTEGER?)
max()
max(input :: ANY?) :: (ANY?)
min()
min(input :: ANY?) :: (ANY?)
percentileCont()
percentileCont(input :: FLOAT?, percentile :: FLOAT?) :: (FLOAT?)
percentileDisc()
percentileDisc(input :: FLOAT?, percentile :: FLOAT?) :: (FLOAT?)
`percentileDisc(input :: INTEGER?, percentile :: FLOAT?) :: (INTEGER?) stdev()
stdev(input :: FLOAT?) :: (FLOAT?)
stdevp()
stdevp(input :: FLOAT?) :: (FLOAT?)
sum()
sum(input :: DURATION?) :: (DURATION?)
`sum(input :: FLOAT?) :: (FLOAT?) `sum(input :: INTEGER?) :: (INTEGER?)
集合函数
Function Signature Description keys()
keys(input :: MAP?) :: (LIST? OF STRING?)
返回MAP的所有KEY LIST keys(input :: NODE?) :: (LIST? OF STRING?)
返回节点的所有属性 LIST keys(input :: RELATIONSHIP?) :: (LIST? OF STRING?)
返回关系的所有属性 LIST labels()
labels(input :: NODE?) :: (LIST? OF STRING?)
Returns a list containing the string representations for all the labels of a node. nodes()
nodes(input :: PATH?) :: (LIST? OF NODE?)
Returns a list containing all the nodes in a path. range()
range(start :: INTEGER?, end :: INTEGER?) :: (LIST? OF INTEGER?)
Returns a list comprising all integer values within a specified range. range(start :: INTEGER?, end :: INTEGER?, step :: INTEGER?) :: (LIST? OF INTEGER?)
Returns a list comprising all integer values within a specified range created with step length. reduce()
`reduce(accumulator :: VARIABLE = initial :: ANY?, variable :: VARIABLE IN list :: LIST OF ANY? expression :: ANY) :: (ANY?)` relationships()
relationships(input :: PATH?) :: (LIST? OF RELATIONSHIP?)
Returns a list containing all the relationships in a path. reverse()
reverse(input :: LIST? OF ANY?) :: (LIST? OF ANY?)
Returns a list in which the order of all elements in the original list have been reversed. tail()
tail(input :: LIST? OF ANY?) :: (LIST? OF ANY?)
Returns all but the first element in a list. toBooleanList()
toBooleanList(input :: LIST? OF ANY?) :: (LIST? OF BOOLEAN?)
toFloatList()
toFloatList(input :: LIST? OF ANY?) :: (LIST? OF FLOAT?)
toIntegerList()
toIntegerList(input :: LIST? OF ANY?) :: (LIST? OF INTEGER?)
toStringList()
toStringList(input :: LIST? OF ANY?) :: (LIST? OF STRING?)
示例
toBooleanList()
:
RETURN toBooleanList(null) as noList,
toBooleanList([null, null]) as nullsInList,
toBooleanList(['a string', true, 'false', null, ['A','B']]) as mixedList
noList nullsInList mixedList <null>
[<null>,<null>]
[<null>,true,false,<null>,<null>]
总结:
参数不是个LIST,报错 LIST 中的null,不转换,保留 LIST中的不可转换元素,结果为null。 BOOLEAN类型的元素,保留原始值
toFloatList
,toIntegerList
,toStringList
与 toBooleanList
规则类似。
数值函数
Function Signature Description abs()
abs(input :: FLOAT?) :: (FLOAT?)
abs(input :: INTEGER?) :: (INTEGER?)
ceil()
ceil(input :: FLOAT?) :: (FLOAT?)
floor()
floor(input :: FLOAT?) :: (FLOAT?)
isNaN()
isNaN(input :: FLOAT?) :: (BOOLEAN?)
Returns true
if the floating point number is NaN
. isNaN(input :: INTEGER?) :: (BOOLEAN?)
rand()
rand() :: (FLOAT?)
round()
round(input :: FLOAT?) :: (FLOAT?)
round(value :: FLOAT?, precision :: NUMBER?) :: (FLOAT?)
round(value :: FLOAT?, precision :: NUMBER?, mode :: STRING?) :: (FLOAT?)
sign()
sign(input :: FLOAT?) :: (INTEGER?)
sign(input :: INTEGER?) :: (INTEGER?)
对数函数
Function Signature Description e()
e() :: (FLOAT?)
返回e。 exp()
exp(input :: FLOAT?) :: (FLOAT?)
返回e^n。 log()
log(input :: FLOAT?) :: (FLOAT?)
返回自然对数,以e为底 log10()
log10(input :: FLOAT?) :: (FLOAT?)
返回以10位底的对数 sqrt()
sqrt(input :: FLOAT?) :: (FLOAT?)
平方差
三角函数
Function Signature Description acos()
acos(input :: FLOAT?) :: (FLOAT?)
asin()
`asin(input :: FLOAT?) :: (FLOAT?) atan()
atan(input :: FLOAT?) :: (FLOAT?)
atan2()
atan2(y :: FLOAT?, x :: FLOAT?) :: (FLOAT?)
cos()
cos(input :: FLOAT?) :: (FLOAT?)
cot()
cot(input :: FLOAT?) :: (FLOAT?)
degrees()
degrees(input :: FLOAT?) :: (FLOAT?)
将弧度转换为角度 haversin()
haversin(input :: FLOAT?) :: (FLOAT?)
半正矢计算 pi()
pi() :: (FLOAT?)
radians()
radians(input :: FLOAT?) :: (FLOAT?)
将角度转换为弧度 sin()
sin(input :: FLOAT?) :: (FLOAT?)
tan()
tan(input :: FLOAT?) :: (FLOAT?)
字符串函数
Function Signature Description left()
left(original :: STRING?, length :: INTEGER?) :: (STRING?)
ltrim()
ltrim(input :: STRING?) :: (STRING?)
replace()
replace(original :: STRING?, search :: STRING?, replace :: STRING?) :: (STRING?)
reverse()
reverse(input :: STRING?) :: (STRING?)
right()
`right(original :: STRING?, length :: INTEGER?) :: (STRING?) rtrim()
rtrim(input :: STRING?) :: (STRING?)
split()
split(original :: STRING?, splitDelimiter :: STRING?) :: (LIST? OF STRING?)
split(original :: STRING?, splitDelimiters :: LIST? OF STRING?) :: (LIST? OF STRING?)
substring()
substring(original :: STRING?, start :: INTEGER?) :: (STRING?)
从0开始 substring(original :: STRING?, start :: INTEGER?, length :: INTEGER?) :: (STRING?)
toLower()
toLower(input :: STRING?) :: (STRING?)
toString()
toString(input :: ANY?) :: (STRING?)
toStringOrNull()
toStringOrNull(input :: ANY?) :: (STRING?)
toUpper()
toUpper(input :: STRING?) :: (STRING?)
trim()
trim(input :: STRING?) :: (STRING?)
时间函数
Function Signature Description date()
date(input = DEFAULT_TEMPORAL_ARGUMENT :: ANY?) :: (DATE?)
创建DATE date.realtime()
date.realtime(timezone = DEFAULT_TEMPORAL_ARGUMENT :: ANY?) :: (DATE?)
使用 realtime clock 创建当前DATE date.statement()
date.statement(timezone = DEFAULT_TEMPORAL_ARGUMENT :: ANY?) :: (DATE?)
使用 statement clock 创建当前DATE date.transaction()
date.transaction(timezone = DEFAULT_TEMPORAL_ARGUMENT :: ANY?) :: (DATE?)
使用 transaction clock 创建当前DATE date.truncate()
date.truncate(unit :: STRING?, input = DEFAULT_TEMPORAL_ARGUMENT :: ANY?, fields = null :: MAP?) :: (DATE?)
截断DATE datetime()
datetime(input = DEFAULT_TEMPORAL_ARGUMENT :: ANY?) :: (DATETIME?)
datetime.fromepoch()
datetime.fromepoch(seconds :: NUMBER?, nanoseconds :: NUMBER?) :: (DATETIME?)
datetime.fromepochmillis()
datetime.fromepochmillis(milliseconds :: NUMBER?) :: (DATETIME?)
datetime.realtime()
datetime.realtime(timezone = DEFAULT_TEMPORAL_ARGUMENT :: ANY?) :: (DATETIME?)
datetime.statement()
datetime.statement(timezone = DEFAULT_TEMPORAL_ARGUMENT :: ANY?) :: (DATETIME?)
datetime.transaction()
datetime.transaction(timezone = DEFAULT_TEMPORAL_ARGUMENT :: ANY?) :: (DATETIME?)
datetime.truncate()
datetime.truncate(unit :: STRING?, input = DEFAULT_TEMPORAL_ARGUMENT :: ANY?, fields = null :: MAP?) :: (DATETIME?)
localdatetime()
localdatetime(input = DEFAULT_TEMPORAL_ARGUMENT :: ANY?) :: (LOCALDATETIME?)
localdatetime.realtime()
localdatetime.realtime(timezone = DEFAULT_TEMPORAL_ARGUMENT :: ANY?) :: (LOCALDATETIME?)
localdatetime.statement()
localdatetime.statement(timezone = DEFAULT_TEMPORAL_ARGUMENT :: ANY?) :: (LOCALDATETIME?)
localdatetime.transaction()
localdatetime.transaction(timezone = DEFAULT_TEMPORAL_ARGUMENT :: ANY?) :: (LOCALDATETIME?)
localdatetime.truncate()
localdatetime.truncate(unit :: STRING?, input = DEFAULT_TEMPORAL_ARGUMENT :: ANY?, fields = null :: MAP?) :: (LOCALDATETIME?)
localtime()
localtime(input = DEFAULT_TEMPORAL_ARGUMENT :: ANY?) :: (LOCALTIME?)
localtime.realtime()
localtime.realtime(timezone = DEFAULT_TEMPORAL_ARGUMENT :: ANY?) :: (LOCALTIME?)
localtime.statement()
localtime.statement(timezone = DEFAULT_TEMPORAL_ARGUMENT :: ANY?) :: (LOCALTIME?)
localtime.transaction()
localtime.transaction(timezone = DEFAULT_TEMPORAL_ARGUMENT :: ANY?) :: (LOCALTIME?)
localtime.truncate()
localtime.truncate(unit :: STRING?, input = DEFAULT_TEMPORAL_ARGUMENT :: ANY?, fields = null :: MAP?) :: (LOCALTIME?)
time()
time(input = DEFAULT_TEMPORAL_ARGUMENT :: ANY?) :: (TIME?)
time.realtime()
time.realtime(timezone = DEFAULT_TEMPORAL_ARGUMENT :: ANY?) :: (TIME?)
time.statement()
time.statement(timezone = DEFAULT_TEMPORAL_ARGUMENT :: ANY?) :: (TIME?)
time.transaction()
time.transaction(timezone = DEFAULT_TEMPORAL_ARGUMENT :: ANY?) :: (TIME?)
time.truncate()
time.truncate(unit :: STRING?, input = DEFAULT_TEMPORAL_ARGUMENT :: ANY?, fields = null :: MAP?) :: (TIME?)
时钟控制
transaction
: 同一个事务,时间返回相同值。statement
: 同一个语句的同一次调用,时间返回相同值。realtime
: 系统时间。
截断单位
millennium
:千年century
:世纪decade
:十年year
:weekYear
:quarter
:month
:week
:day
:hour
:minute
:second
:millisecond
: 毫秒microsecond
: 微秒
示例
date([{timezone}])
RETURN date() AS currentDate
RETURN date({timezone: 'America/Los Angeles'}) AS currentDateInLAdate({year [, month, day]})
UNWIND [
date({year: 1984, month: 10, day: 11}),
date({year: 1984, month: 10}),
date({year: 1984})
] AS theDate
RETURN theDatedate({year [, week, dayOfWeek]})
UNWIND [
date({year: 1984, week: 10, dayOfWeek: 3}),
date({year: 1984, week: 10}),
date({year: 1984})
] AS theDate
RETURN theDate
所有时间函数,都支持通过一个Map对象 构造时间实例。
duration函数
Function Signature Description duration()
duration(input :: ANY?) :: (DURATION?)
duration.between()
duration.between(from :: ANY?, to :: ANY?) :: (DURATION?)
计算2个时间差 duration.inDays()
duration.inDays(from :: ANY?, to :: ANY?) :: (DURATION?)
duration.inMonths()
duration.inMonths(from :: ANY?, to :: ANY?) :: (DURATION?)
duration.inSeconds()
duration.inSeconds(from :: ANY?, to :: ANY?) :: (DURATION?)
示例
duration([ {years, quarters, months, weeks, days, hours, minutes, seconds, milliseconds, microseconds, nanoseconds} ])duration(temporalAmount) // temporalAmount STRING类型
duration标准字符串格式:P[nY][nM][nW][nD][T[nH][nM][nS]]
,具体见:https://neo4j.com/docs/cypher-manual/current/values-and-types/temporal/#cypher-temporal-specifying-durations
duration.between(instant1, instant2)
字段
years
quarters
months
weeks
days
hours
minutes
seconds
milliseconds
microseconds
nanoseconds
空间函数
Function Signature Description point.distance()
`point.distance(from :: POINT?, to :: POINT?) :: (FLOAT?) point()
- Cartesian 2Dpoint(input :: MAP?) :: (POINT?)
point()
- Cartesian 3Dpoint(input :: MAP?) :: (POINT?)
point()
- WGS 84 2D`point(input :: MAP?) :: (POINT?) point()
- WGS 84 3D`point(input :: MAP?) :: (POINT?) point.withinBBox()
point.withinBBox(point :: POINT?, lowerLeft :: POINT?, upperRight :: POINT?) :: (BOOLEAN?)
加载 CSV 函数
Function Signature Description file()
file() :: (STRING?)
返回文件路径 linenumber()
linenumber() :: (INTEGER?)
返回行数
Graph functions
Function Signature Description graph.names()
graph.names() :: (LIST? OF STRING?)
graph.propertiesByName()
graph.propertiesByName(name :: STRING?) :: (MAP?)
graph.byName()
USE graph.byName(name :: STRING?)
用户自定义函数
Type Description Usage Developing Scalar For each row the function takes parameters and returns a result. Using UDF Extending Neo4j (UDF) Aggregating Consumes many rows and produces an aggregated result. Using aggregating UDF Extending Neo4j (Aggregating UDF)
附录
参考
https://neo4j.com/docs/cypher-manual/current/functions/