数据类型转换
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) |
|---|---|
|
|
如果将不受支持的值(例如 DATE 值)传递给函数 toFloat,它将抛出错误:
WITH date({
year: 2023, month: 5, day: 2
}) AS d
RETURN toFloat(d)
22N27: 错误: 数据异常 - 无效的实体类型。函数 toFloat() 第 0 个参数的输入 'DATE' 无效。应为 FLOAT、INTEGER 或 STRING。 22G03: 错误: 数据异常 - 无效的值类型 |
但是,如果将相同的值传递给函数 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 |
|---|---|---|
|
|
|