在Geode查询中,值不被认为是匹配的。我想知道这些值是否根本没有被正确使用,因为我不能成功地执行任何类型的WHERE。
我尝试过输入键和值,没有引号,有单引号(‘)和双引号(")。我没有使用复杂的类,所以默认情况下一切都是java.lang.String。
例如,我在"amount“区域中有以下条目:
put --key=(“p7”) --value=(356.08) --region=amount查询中
query --query="SELECT * FROM /amount"显示该区域中的键/值对以及其他对。但是,当我查询
query --query="SELECT * FROM /amount WHERE /amount.entries.value > 100"我得到的结果是: true,没有行(所以我知道查询是有效的)
我已经用头撞了两天了,我不明白这个应该是简单的查询有什么问题。
发布于 2019-04-23 19:53:16
put命令假设key和value都是java.lang.String类型,这就是为什么比较会默默失败并且不返回任何结果的原因。您应该使用--key-class和--value-class参数来自定义实际的类型(有关详细信息,请参阅here )。
例如,下面的一组命令可以实现您想要的效果:
gfsh>create region --name=amount --type=REPLICATE
Member | Status
------- | -------------------------------------
server1 | Region "/amount" created on "server1"
gfsh>query --query="<TRACE> SELECT * FROM /amount"
Result : true
Limit : 100
Rows : 0
Query Trace : Query Executed in 0.395477 ms; indexesUsed(0)
gfsh>put --key="key1" --value="356" --region=/amount --value-class=java.lang.Long
Result : true
Key Class : java.lang.String
Key : key1
Value Class : java.lang.Long
Old Value : null
gfsh>query --query="<TRACE> SELECT * FROM /amount.values"
Result : true
Limit : 100
Rows : 1
Query Trace : Query Executed in 0.468153 ms; indexesUsed(0)
Result
------
356
gfsh>query --query="<TRACE> SELECT * FROM /amount.values v WHERE v > 100"
Result : true
Limit : 100
Rows : 1
Query Trace : Query Executed in 0.85026 ms; indexesUsed(0)
Result
------
356希望这能有所帮助。干杯。
https://stackoverflow.com/questions/55768642
复制相似问题