gpt4 book ai didi

neo4j - Neo4j Cypher 中 NaN 的文字表达是什么?

转载 作者:行者123 更新时间:2023-12-01 22:22:29 33 4
gpt4 key购买 nike

如何在 Cypher 查询中将 NaN 表示为文字?

情况

我在数据库中有一个 NaN 值:

match (a) with max(a.CONCENTRATION) as m return m

会回来

m
---
NaN

Cypher reference in Neo4j提到这是可能的,因为存储了特殊值:

The special value java.lang.Double.NaN is regarded as being larger than all other numbers.

我尝试过的

但是,既然它在那里,我不知道如何在搜索中匹配它们,因为你得到以下错误

输入

match (a) where a.CONCENTRATION = NaN return a limit 10

错误

Variable `NaN` not defined (line 1, column 35 (offset: 34))

其他引用资料

Cypher reference in Neo4j没有提到 NaN 文字,除非我错过了。

我用谷歌搜索了“Cypher NaN”,但我得到的最接近的结果是如何添加 inf/NaN,这并没有直接解决 (How to add infinity, NaN, or null values to a double[] property on a node in Cypher/Neo4j)。

最佳答案

[更新 2]

Neo4j 5.0 介绍:

[原创]

无法指定字面量,但这应该可行:

MATCH (a)
WHERE TOFLOAT(a.CONCENTRATION) <> a.CONCENTRATION
RETURN a
LIMIT 10;

TOFLOAT() 如果参数无法(根据需要)转换为数字,则返回 NULL。但是,即使参数可以转换,结果也不会等于参数,除非它以数字开头。

[更新 1]

@chaserino 不错的新答案促使我做更多的实验。

虽然 NaNInfinity-Infinity 仍然没有文字,但我确定 Cypher 可以在 neo4j 版本中生成这些值3.4.0+(我没有测试更早的版本)。然后,您可以使用这些值进行比较。

例如,此查询显示了如何生成这些值:

RETURN 0.0/0.0, 1.0/0.0, -1.0/0.0

结果如下:

╒═════════╤═════════╤══════════╕
│"0.0/0.0"│"1.0/0.0"│"-1.0/0.0"│
╞═════════╪═════════╪══════════╡
│NaN │Infinity │-Infinity │
└─────────┴─────────┴──────────┘

注意:对于 Infinity,您实际上可以使用任何正分子,而对于 -Infinity,您可以使用任何负分子。

关于neo4j - Neo4j Cypher 中 NaN 的文字表达是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39149234/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com