首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >WHERE子句与Geode中的值不匹配

问WHERE子句与Geode中的值不匹配
EN

Stack Overflow用户
提问于 2019-04-20 06:49:20
回答 1查看 102关注 0票数 0

在Geode查询中,值不被认为是匹配的。我想知道这些值是否根本没有被正确使用,因为我不能成功地执行任何类型的WHERE。

我尝试过输入键和值,没有引号,有单引号(‘)和双引号(")。我没有使用复杂的类,所以默认情况下一切都是java.lang.String。

例如,我在"amount“区域中有以下条目:

代码语言:javascript
复制
put --key=(“p7”) --value=(356.08) --region=amount

查询中

代码语言:javascript
复制
query --query="SELECT * FROM /amount"

显示该区域中的键/值对以及其他对。但是,当我查询

代码语言:javascript
复制
query --query="SELECT * FROM /amount WHERE /amount.entries.value > 100"

我得到的结果是: true,没有行(所以我知道查询是有效的)

我已经用头撞了两天了,我不明白这个应该是简单的查询有什么问题。

EN

回答 1

Stack Overflow用户

发布于 2019-04-23 19:53:16

put命令假设key和value都是java.lang.String类型,这就是为什么比较会默默失败并且不返回任何结果的原因。您应该使用--key-class和--value-class参数来自定义实际的类型(有关详细信息,请参阅here )。

例如,下面的一组命令可以实现您想要的效果:

代码语言:javascript
复制
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

希望这能有所帮助。干杯。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55768642

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档