数据类型转换
Cypher® 支持许多函数来将值转换为不同的数据类型。本节将概述这些函数,并提供如何在实践中使用它们的示例。
用于转换数据值的函数
以下函数可用于转换数据值
函数 | 描述 |
---|---|
|
将 |
|
转换 |
|
将 |
|
将 |
|
转换 |
|
将 |
|
将 |
|
将 |
|
将 |
|
将 |
|
转换 |
|
将 |
有关这些函数以及许多其他函数的更多信息,可以在 函数 部分中找到。
示例
以下图用于下面的示例
要重新创建它,请对空的 Neo4j 数据库运行以下查询
CREATE (keanu:Person {name:'Keanu Reeves', age: 58, active:true}),
(carrieAnne:Person {name:'Carrie-Anne Moss', age: 55, active:true}),
(keanu)-[r:KNOWS {since:1999}]->(carrieAnne)
返回转换后的值
在下面的查询中,函数 toFloat
用于转换两个 STRING
值。它显示如果数据转换不可行,则返回 null
。
MATCH (keanu:Person {name:'Keanu Reeves'})
RETURN toFloat(keanu.age), toInteger(keanu.name)
toFloat(keanu.age) | toInteger(keanu.name) |
---|---|
|
|
如果函数 toFloat
传递了一个不受支持的值(例如 DATE
值),它将抛出错误
WITH date({
year: 2023, month: 5, day: 2
}) AS d
RETURN toFloat(d)
Type mismatch: expected Float, Integer, Number or String but was Date (line 4, column 16 (offset: 66))
"RETURN toFloat(d)"
但是,如果将相同的值传递给函数 toFloatOrNull
,则将返回 null
。
WITH date({
year: 2023, month: 5, day: 2
}) AS d
RETURN toFloatOrNull(d)
toFloatOrNull(d) |
---|
|
还可以将转换后的值作为列表返回。下面的查询使用 toStringList
将所有传递的值转换为 STRING
值,并将其作为 LIST<STRING>
返回
MATCH (keanu:Person {name:'Keanu Reeves'})
RETURN toStringList([keanu.name, keanu.age]) AS keanuList
keanuList |
---|
|
更新属性值类型
转换数据值的函数可用于更新节点和关系上的属性值。下面的查询将 age
(INTEGER
)、active
(BOOLEAN
)和 since
(INTEGER
)属性转换为 STRING
值
MATCH (keanu:Person {name:'Keanu Reeves'})-[r:KNOWS]-()
SET keanu.age = toString(keanu.age),
keanu.active = toString(keanu.active),
r.since = toString(r.since)
RETURN keanu.age, keanu.active, r.since
keanu.age | keanu.active | r.since |
---|---|---|
|
|
|