函数

本节包含 Cypher® 中所有函数的摘要。

要列出所有函数,请运行以下查询

列出所有函数
SHOW FUNCTIONS

有关此命令的更多信息,请参阅 SHOW FUNCTIONS

STRING作为输入的函数都作用于Unicode 字符,而不是标准的char[]。例如,应用于任何Unicode 字符size()函数将返回1,即使该字符不适合一个char的 16 位。

聚合函数

这些函数将多个值作为参数,并计算并返回它们的聚合值。

函数 签名 描述

avg()

avg(input :: INTEGER | FLOAT | DURATION) :: INTEGER | FLOAT | DURATION

返回一组INTEGERFLOATDURATION值的平均值。

collect()

collect(input :: ANY) :: LIST<ANY>

返回一个包含表达式返回值的列表。

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 :: INTEGER | FLOAT, percentile :: FLOAT) :: FLOAT

使用舍入方法返回一组中离给定百分位数最近的INTEGERFLOAT值。

stDev()

stDev(input :: FLOAT) :: FLOAT

返回给定值在一组中针对总体样本的标准差。

stDevP()

stDevP(input :: FLOAT) :: FLOAT

返回给定值在一组中针对整个总体的标准差。

sum()

sum(input :: INTEGER | FLOAT | DURATION) :: INTEGER | FLOAT | DURATION

返回一组INTEGERFLOATDURATION值的总和。

数据库函数

数据库函数提供有关数据库的信息。

函数 签名 描述

db.nameFromElementId()

db.nameFromElementId(elementId :: STRING) :: STRING

根据给定的元素 ID 解析数据库名称。

GenAI 函数

函数 签名 描述

genai.vector.encode()

genai.vector.encode(resource :: STRING, provider :: STRING, configuration :: MAP = {}) :: LIST<FLOAT>

使用指定的提供程序将给定的资源编码为向量。

图函数

图函数提供有关复合数据库中组成图的信息。

函数 签名 描述

graph.byElementId()

USE graph.byElementId(elementId :: STRING)

解析给定元素 ID 所属的组成图。 在 5.13 中引入

graph.byName()

USE graph.byName(name :: STRING)

按名称解析组成图。

graph.names()

graph.names() :: LIST<STRING>

返回一个包含当前复合数据库中所有图名称的列表。

graph.propertiesByName()

graph.propertiesByName(name :: STRING) :: MAP

返回一个包含与给定图关联的属性的映射。

列表函数

这些函数返回其他值的列表。有关列表的更多详细信息和示例,请参阅 列表

函数 签名 描述

keys()

keys(input :: NODE | RELATIONSHIP | MAP) :: LIST<STRING>

返回一个LIST<STRING>,其中包含MAPNODERELATIONSHIP的所有属性名称的STRING表示形式。

labels()

labels(input :: NODE) :: LIST<STRING>

返回一个LIST<STRING>,其中包含NODE的所有标签的STRING表示形式。

nodes()

nodes(input :: PATH) :: LIST<NODE>

返回一个LIST<NODE>,其中包含PATH中的所有NODE值。

range()

range(start :: INTEGER, end :: INTEGER [, step :: INTEGER]) :: LIST<INTEGER>

返回一个LIST<INTEGER>,其中包含指定范围内的所有INTEGER值,可以选择指定步长。

reduce()

reduce(accumulator :: VARIABLE = initial :: ANY, variable :: VARIABLE IN list :: LIST<ANY> expression :: ANY) :: ANY

LIST<ANY>的各个元素运行表达式,并将表达式的结果存储在累加器中。

relationships()

relationships(input :: PATH) :: LIST<RELATIONSHIP>

返回一个包含PATH中所有RELATIONSHIP值的LIST<RELATIONSHIP>

reverse()

reverse(input :: LIST<ANY>) :: LIST<ANY>

返回一个LIST<ANY>,其中给定LIST<ANY>中所有元素的顺序已反转。

tail()

tail(input :: LIST<ANY>) :: LIST<ANY>

返回LIST<ANY>中除第一个元素之外的所有元素。

toBooleanList()

toBooleanList(input :: LIST<ANY>) :: LIST<BOOLEAN>

LIST<ANY>的值转换为LIST<BOOLEAN>的值。如果任何值无法转换为BOOLEAN,则它们在返回的LIST<BOOLEAN>中将为null。

toFloatList()

toFloatList(input :: LIST<ANY>) :: LIST<FLOAT>

LIST<ANY>转换为LIST<FLOAT>的值。如果任何值无法转换为FLOAT,则它们在返回的LIST<FLOAT>中将为null。

toIntegerList()

toIntegerList(input :: LIST<ANY>) :: LIST<INTEGER>

LIST<ANY>转换为LIST<INTEGER>的值。如果任何值无法转换为INTEGER,则它们在返回的LIST<INTEGER>中将为null。

toStringList()

toStringList(input :: LIST<ANY>) :: LIST<STRING>

LIST<ANY>转换为LIST<STRING>的值。如果任何值无法转换为STRING,则它们在返回的LIST<STRING>中将为null。

LOAD CSV 函数

LOAD CSV 函数可用于获取有关LOAD CSV处理的文件的信息。

函数 签名 描述

file()

file() :: STRING

返回LOAD CSV正在使用的文件的绝对路径。

linenumber()

linenumber() :: INTEGER

返回LOAD CSV当前正在使用的行号。

对数函数

这些函数仅对数值表达式进行运算,如果对任何其他值使用,则将返回错误。

函数 签名 描述

e()

e() :: FLOAT

返回自然对数的底数 e。

exp()

exp(input :: FLOAT) :: FLOAT

返回en,其中 e 是自然对数的底数,n 是参数表达式的值。

log()

log(input :: FLOAT) :: FLOAT

返回FLOAT的自然对数。

log10()

log10(input :: FLOAT) :: FLOAT

返回FLOAT的常用对数(以 10 为底)。

sqrt()

sqrt(input :: FLOAT) :: FLOAT

返回FLOAT的平方根。

数值函数

这些函数仅对数值表达式进行运算,如果对任何其他值使用,则将返回错误。

函数 签名 描述

abs()

abs(input :: INTEGER | FLOAT) :: INTEGER | FLOAT

返回INTEGERFLOAT的绝对值。

ceil()

ceil(input :: FLOAT) :: FLOAT

返回大于或等于某个数字且等于INTEGER的最小FLOAT

floor()

floor(input :: FLOAT) :: FLOAT

返回小于或等于某个数字且等于INTEGER的最大FLOAT

isNaN()

isNaN(input :: INTEGER | FLOAT) :: BOOLEAN

如果浮点数为NaN,则返回true

rand()

rand() :: FLOAT

返回0(包含)到1(不包含)范围内的随机FLOAT

round()

round(input :: FLOAT [, precision :: INTEGER | FLOAT, mode :: STRING]) :: FLOAT

返回四舍五入到最接近的INTEGER的数字的值,可以选择使用指定的精度和舍入模式。

sign()

sign(input :: INTEGER | FLOAT) :: INTEGER

返回INTEGERFLOAT的符号:如果数字为0,则返回0,对于任何负数返回-1,对于任何正数返回1。

三角函数

这些函数仅对数值表达式进行运算,如果对任何其他值使用,则将返回错误。

所有三角函数都使用弧度进行运算,除非另有说明。

函数 签名 描述

acos()

acos(input :: FLOAT) :: FLOAT

返回FLOAT的反余弦值(以弧度表示)。

asin()

asin(input :: FLOAT) :: FLOAT

返回FLOAT的反正弦值(以弧度表示)。

atan()

atan(input :: FLOAT) :: FLOAT

返回FLOAT的反正切值(以弧度表示)。

atan2()

atan2(y :: FLOAT, x :: FLOAT) :: FLOAT

返回一组坐标的反正切2值(以弧度表示)。

cos()

cos(input :: FLOAT) :: FLOAT

返回FLOAT的余弦值。

cot()

cot(input :: FLOAT) :: FLOAT

返回FLOAT的余切值。

degrees()

degrees(input :: FLOAT) :: FLOAT

将弧度转换为度数。

haversin()

haversin(input :: FLOAT) :: FLOAT

返回数字的半正矢值。

pi()

pi() :: FLOAT

返回数学常数 pi。

radians()

radians(input :: FLOAT) :: FLOAT

将度数转换为弧度。

sin()

sin(input :: FLOAT) :: FLOAT

返回FLOAT的正弦值。

tan()

tan(input :: FLOAT) :: FLOAT

返回FLOAT的正切值。

谓词函数

这些函数对于给定的参数返回 true 或 false。

函数 签名 描述

all()

all(variable :: ANY, list :: LIST<ANY>, predicate :: ANY) :: BOOLEAN

如果谓词对给定LIST<ANY>中的所有元素都成立,则返回 true。

any()

any(variable :: ANY, list :: LIST<ANY>, predicate :: ANY) :: BOOLEAN

如果谓词对给定LIST<ANY>中的至少一个元素成立,则返回 true。

exists()

exists(input :: ANY) :: BOOLEAN

如果图中存在模式的匹配项,则返回true

isEmpty()

isEmpty(input :: LIST<ANY> | MAP | STRING ) :: BOOLEAN

检查给定的LIST<ANY>MAPSTRING是否为空。

none()

none(variable :: ANY, list :: LIST<ANY>, predicate :: ANY) :: BOOLEAN

如果谓词对给定LIST<ANY>中的任何元素都不成立,则返回 true。

single()

single(variable :: ANY, list :: LIST<ANY>, predicate :: ANY) :: BOOLEAN

如果谓词对给定LIST<ANY>中的恰好一个元素成立,则返回 true。

标量函数

这些函数返回单个值。

函数 签名 描述

char_length()

char_length(input :: STRING) :: INTEGER

返回STRING中 Unicode 字符的数量。在 5.13 版中引入

character_length()

character_length(input :: STRING) :: INTEGER

返回STRING中 Unicode 字符的数量。在 5.13 版中引入

coalesce()

coalesce(input :: ANY) :: ANY

返回表达式列表中的第一个非空值。

elementId()

elementId(input :: NODE | RELATIONSHIP) :: STRING

返回节点或关系标识符,在特定的事务和 DBMS 中唯一。

endNode()

endNode(input :: RELATIONSHIP) :: NODE

返回RELATIONSHIP的结束NODE

head()

head(list :: LIST<ANY>) :: ANY

返回LIST<ANY>中的第一个元素。

id()

id(input :: NODE | RELATIONSHIP) :: INTEGER

已弃用 返回NODERELATIONSHIP的 ID。已替换为elementId()

last()

last(list :: LIST<ANY>) :: ANY

返回LIST<ANY>中的最后一个元素。

length()

length(input :: PATH) :: INTEGER

返回PATH的长度。

nullIf()

nullIf(v1 :: ANY, v2 :: ANY) :: ANY

如果两个给定参数等效,则返回null,否则返回第一个参数的值。

properties()

properties(input :: NODE | RELATIONSHIP | MAP) :: MAP

返回一个包含NODERELATIONSHIP的所有属性的MAP

randomUUID()

randomUUID() :: STRING

生成一个随机 UUID。

size()

size(input STRING | LIST<ANY>) :: INTEGER

返回LIST<ANY>中的项目数或STRING中 Unicode 字符的数量。

startNode()

startNode(input :: RELATIONSHIP) :: NODE

返回RELATIONSHIP的起始NODE

toBoolean()

toBoolean(input :: BOOLEAN | STRING | INTEGER) :: BOOLEAN

BOOLEANSTRINGINTEGER值转换为BOOLEAN值。

toBooleanOrNull()

toBooleanOrNull(input :: ANY) :: BOOLEAN

将值转换为BOOLEAN值,如果值无法转换,则为null。

toFloat()

toFloat(input :: STRING | INTEGER | FLOAT) :: FLOAT

STRINGINTEGER值转换为FLOAT值。

toFloatOrNull()

toFloatOrNull(input :: ANY) :: FLOAT

将值转换为FLOAT值,如果值无法转换,则为null。

toInteger()

toInteger(input :: BOOLEAN | STRING | INTEGER | FLOAT) :: INTEGER

BOOLEANSTRINGFLOAT值转换为INTEGER值。

toIntegerOrNull()

toIntegerOrNull(input :: ANY) :: INTEGER

将值转换为INTEGER值,如果值无法转换,则为null。

type()

type(input :: RELATIONSHIP) :: STRING

返回RELATIONSHIP类型的STRING表示形式。

valueType()

valueType(input :: ANY) :: STRING

返回给定表达式计算到的最精确值类型的STRING表示形式。

字符串函数

这些函数用于操作STRING值或创建其他值的STRING表示形式。

函数 签名 描述

btrim()

btrim(original :: STRING [, trimCharacterString :: STRING ]) :: STRING

返回给定的STRING,其中已删除前导和尾随空格,可以选择指定trimCharacterString值以删除。 在 5.20 版本中引入

left()

left(original :: STRING, length :: INTEGER) :: STRING

返回一个STRING,其中包含给定STRING中最左侧指定数量(INTEGER)的字符。

lower()

lower(input :: STRING) :: STRING

返回给定的STRING的小写形式。此函数是toLower()函数的别名,它作为 Cypher 的GQL 兼容性的一部分引入。 在 5.21 版本中引入

ltrim()

ltrim(input :: STRING [, trimCharacterString :: STRING]) :: STRING

返回给定的STRING,其中已删除前导空格,可以选择指定trimCharacterString以删除。

normalize()

normalize(input :: STRING [,normalForm = NFC :: [NFC, NFD, NFKC, NFKD]]) :: STRING

规范化STRING,可以选择指定规范化形式。 在 5.17 版本中引入

replace()

replace(original :: STRING, search :: STRING, replace :: STRING) :: STRING

返回一个STRING,其中给定STRING中所有出现的指定搜索STRING都被另一个(指定的)替换STRING替换。

reverse()

reverse(input :: STRING) :: STRING

返回一个STRING,其中给定STRING中所有字符的顺序都被反转。

right()

right(original :: STRING, length :: INTEGER) :: STRING

返回一个STRING,其中包含给定STRING中最右侧指定数量的字符。

rtrim()

rtrim(input :: STRING [, trimCharacterString :: STRING]) :: STRING

返回给定的STRING,其中已删除尾随空格,可以选择指定trimCharacterString字符以删除。

split()

split(original :: STRING, splitDelimiters :: LIST<STRING>) :: LIST<STRING>

返回一个LIST<STRING>,该列表是通过在给定STRING中匹配任何给定分隔符周围进行分割而产生的。

substring()

substring(original :: STRING, start :: INTEGER length :: INTEGER) :: STRING

从给定的STRING返回一个给定length的子字符串,从一个基于 0 的索引开始。

toLower()

toLower(input :: STRING) :: STRING

返回给定的STRING的小写形式。

toString()

toString(input :: ANY) :: STRING

INTEGERFLOATBOOLEANPOINT或时间类型(即DATEZONED TIMELOCAL TIMEZONED DATETIMELOCAL DATETIMEDURATION)值转换为STRING

toStringOrNull()

toStringOrNull(input :: ANY) :: STRING

INTEGERFLOATBOOLEANPOINT或时间类型(即DATEZONED TIMELOCAL TIMEZONED DATETIMELOCAL DATETIMEDURATION)值转换为STRING,如果该值无法转换,则返回null。

toUpper()

toUpper(input :: STRING) :: STRING

返回给定的STRING的大写形式。

trim()

trim(trimCharacterString :: STRING, trimSpecification :: STRING, input :: STRING) :: STRING

返回给定的STRING,其中已删除前导和/或尾随trimCharacterString字符。

upper()

upper(input :: STRING) :: STRING

返回给定的STRING的大写形式。此函数是toUpper()函数的别名,它作为 Cypher 的GQL 兼容性的一部分引入。 在 5.21 版本中引入

空间函数

这些函数用于在地理或笛卡尔坐标系中指定二维或三维点,并计算两点之间的测地线距离。

函数 签名 描述

point()

point(input :: MAP) :: POINT

返回一个二维或三维点对象,在笛卡尔坐标系或 WGS 84 地理坐标系中给出两个或三个坐标值。

point.distance()

point.distance(from :: POINT, to :: POINT) :: FLOAT

返回一个FLOAT,表示同一 CRS 中任意两点之间的距离。如果点位于 WGS 84 CRS 中,则该函数返回测地线距离(即地球曲面上最短路径)。如果点位于笛卡尔 CRS 中,则该函数返回欧几里得距离(即平面空间中最短直线距离)。

point.withinBBox()

point.withinBBox(point :: POINT, lowerLeft :: POINT, upperRight :: POINT) :: BOOLEAN

如果提供的点位于由两个提供的点lowerLeftupperRight定义的边界框内,则返回true

时间持续时间函数

可以使用以下函数创建和操作时间类型DURATION

函数 签名 描述

duration()

duration(input :: ANY) :: DURATION

构造一个DURATION值。

duration.between()

duration.between(from :: ANY, to :: ANY) :: DURATION

以逻辑单位计算从from时刻(包含)到to时刻(不包含)之间的DURATION

duration.inDays()

duration.inDays(from :: ANY, to :: ANY) :: DURATION

以天为单位计算从from时刻(包含)到to时刻(不包含)之间的DURATION

duration.inMonths()

duration.inMonths(from :: ANY, to :: ANY) :: DURATION

以月为单位计算从from时刻(包含)到to时刻(不包含)之间的DURATION

duration.inSeconds()

duration.inSeconds(from :: ANY, to :: ANY) :: DURATION

以秒为单位计算从from时刻(包含)到to时刻(不包含)之间的DURATION

时间瞬时类型函数

可以使用以下函数创建和操作时间类型的值——DATEZONED TIMELOCAL TIMEZONED DATETIMELOCAL DATETIME

函数 签名 描述

date()

date(input = DEFAULT_TEMPORAL_ARGUMENT :: ANY) :: DATE

创建一个DATE时刻。

date.realtime()

date.realtime(timezone = DEFAULT_TEMPORAL_ARGUMENT :: ANY) :: DATE

使用实时时钟返回当前DATE时刻。

date.statement()

date.statement(timezone = DEFAULT_TEMPORAL_ARGUMENT :: ANY) :: DATE

使用语句时钟返回当前DATE时刻。

date.transaction()

date.transaction(timezone = DEFAULT_TEMPORAL_ARGUMENT :: ANY) :: DATE

使用事务时钟返回当前DATE时刻。

date.truncate()

date.truncate(unit :: STRING, input = DEFAULT_TEMPORAL_ARGUMENT :: ANY, fields = null :: MAP) :: DATE

使用指定的单位将给定的时间值截断为DATE时刻。

datetime()

datetime(input = DEFAULT_TEMPORAL_ARGUMENT :: ANY) :: ZONED DATETIME

创建一个ZONED DATETIME时刻。

datetime.fromepoch()

datetime.fromepoch(seconds :: INTEGER | FLOAT, nanoseconds :: INTEGER | FLOAT) :: ZONED DATETIME

给定自纪元开始以来的秒数和纳秒数,创建一个ZONED DATETIME

datetime.fromepochmillis()

datetime.fromepochmillis(milliseconds :: INTEGER | FLOAT) :: ZONED DATETIME

给定自纪元开始以来的毫秒数,创建一个ZONED DATETIME

datetime.realtime()

datetime.realtime(timezone = DEFAULT_TEMPORAL_ARGUMENT :: ANY) :: ZONED DATETIME

使用实时时钟返回当前ZONED DATETIME时刻。

datetime.statement()

datetime.statement(timezone = DEFAULT_TEMPORAL_ARGUMENT :: ANY) :: ZONED DATETIME

使用语句时钟返回当前ZONED DATETIME时刻。

datetime.transaction()

datetime.transaction(timezone = DEFAULT_TEMPORAL_ARGUMENT :: ANY) :: ZONED DATETIME

使用事务时钟返回当前ZONED DATETIME时刻。

datetime.truncate()

datetime.truncate(unit :: STRING, input = DEFAULT_TEMPORAL_ARGUMENT :: ANY, fields = null :: MAP) :: ZONED DATETIME

使用指定的单位将给定的时间值截断为ZONED DATETIME时刻。

localdatetime()

localdatetime(input = DEFAULT_TEMPORAL_ARGUMENT :: ANY) :: LOCAL DATETIME

创建一个LOCAL DATETIME时刻。

localdatetime.realtime()

localdatetime.realtime(timezone = DEFAULT_TEMPORAL_ARGUMENT :: ANY) :: LOCAL DATETIME

使用实时时钟返回当前LOCAL DATETIME时刻。

localdatetime.statement()

localdatetime.statement(timezone = DEFAULT_TEMPORAL_ARGUMENT :: ANY) :: LOCAL DATETIME

使用语句时钟返回当前LOCAL DATETIME时刻。

localdatetime.transaction()

localdatetime.transaction(timezone = DEFAULT_TEMPORAL_ARGUMENT :: ANY) :: LOCAL DATETIME

使用事务时钟返回当前LOCAL DATETIME时刻。

localdatetime.truncate()

localdatetime.truncate(unit :: STRING, input = DEFAULT_TEMPORAL_ARGUMENT :: ANY, fields = null :: MAP) :: LOCAL DATETIME

使用指定的单位将给定的时间值截断为LOCAL DATETIME时刻。

localtime()

localtime(input = DEFAULT_TEMPORAL_ARGUMENT :: ANY) :: LOCAL TIME

创建一个LOCAL TIME时刻。

localtime.realtime()

localtime.realtime(timezone = DEFAULT_TEMPORAL_ARGUMENT :: ANY) :: LOCAL TIME

使用实时时钟返回当前LOCAL TIME时刻。

localtime.statement()

localtime.statement(timezone = DEFAULT_TEMPORAL_ARGUMENT :: ANY) :: LOCAL TIME

使用语句时钟返回当前LOCAL TIME时刻。

localtime.transaction()

localtime.transaction(timezone = DEFAULT_TEMPORAL_ARGUMENT :: ANY) :: LOCAL TIME

使用事务时钟返回当前LOCAL TIME时刻。

localtime.truncate()

localtime.truncate(unit :: STRING, input = DEFAULT_TEMPORAL_ARGUMENT :: ANY, fields = null :: MAP) :: LOCAL TIME

使用指定的单位将给定的时间值截断为LOCAL TIME时刻。

time()

time(input = DEFAULT_TEMPORAL_ARGUMENT :: ANY) :: ZONED TIME

创建一个ZONED TIME时间点。

time.realtime()

time.realtime(timezone = DEFAULT_TEMPORAL_ARGUMENT :: ANY) :: ZONED TIME

使用实时时钟返回当前的ZONED TIME时间点。

time.statement()

time.statement(timezone = DEFAULT_TEMPORAL_ARGUMENT :: ANY) :: ZONED TIME

使用语句时钟返回当前的ZONED TIME时间点。

time.transaction()

time.transaction(timezone = DEFAULT_TEMPORAL_ARGUMENT :: ANY) :: ZONED TIME

使用事务时钟返回当前的ZONED TIME时间点。

time.truncate()

time.truncate(unit :: STRING, input = DEFAULT_TEMPORAL_ARGUMENT :: ANY, fields = null :: MAP) :: ZONED TIME

使用指定的单位将给定的时间值截断到ZONED TIME时间点。

用户自定义函数

用户自定义函数是用 Java 编写的,部署到数据库中,并像任何其他 Cypher 函数一样调用。可以开发和使用两种主要类型的函数

类型 描述 用法 开发

标量

对于每一行,函数都接收参数并返回结果。

使用 UDF

扩展 Neo4j (UDF)

聚合

使用多行并生成聚合结果。

使用聚合 UDF

扩展 Neo4j (聚合 UDF)

向量函数

向量函数允许您计算向量对的相似度得分。

函数 签名 描述

vector.similarity.cosine()

vector.similarity.cosine(a :: LIST<INTEGER | FLOAT>, b :: LIST<INTEGER | FLOAT>) :: FLOAT

返回一个FLOAT,表示基于余弦的两个参数向量的相似度。

vector.similarity.euclidean()

vector.similarity.euclidean(a :: LIST<INTEGER | FLOAT>, b :: LIST<INTEGER | FLOAT>) :: FLOAT

返回一个FLOAT,表示基于欧氏距离的两个参数向量的相似度。