如何在Pivotal GemFire中编写类SQL CASE语句并转换指定SQL示例
在Pivotal GemFire中实现类似SQL的CASE语句
没问题!Pivotal GemFire的**OQL(对象查询语言)**完全支持类似SQL的CASE逻辑,语法和你熟悉的SQL几乎一致,只需要稍微适配下GemFire的对象模型特性就行。
针对你给出的SQL示例,对应的GemFire OQL查询可以这么写:
SELECT name, lastName, city, CASE WHEN city = 'Mumbai' THEN '01' ELSE '02' END AS Code FROM /products
关键细节说明:
- GemFire OQL的
FROM子句后面跟的是缓存区域的路径(比如/products,对应你创建的名为products的缓存区),而非直接写表名。 - 字段名要和缓存中存储的对象(比如
Product类)的JavaBean属性名严格匹配:如果你的对象属性是lastName而不是lastname,查询里就要用lastName(GemFire会通过对应的getLastName()getter方法访问属性)。 - CASE语句的语法和SQL完全相同:支持多分支
WHEN ... THEN ...,也可以省略ELSE(此时不满足条件的记录会返回null)。
多条件CASE的扩展示例
如果需要多个分支判断,写法和SQL一致:
SELECT name, city, CASE WHEN city = 'Mumbai' THEN '01' WHEN city = 'Delhi' THEN '03' WHEN city = 'Bangalore' THEN '04' ELSE '02' END AS Code FROM /products
额外注意事项
确保缓存对象的属性是可访问的:要么属性本身是public,要么提供了标准的JavaBean getter方法(比如getName()、getCity()),GemFire OQL依赖这些方法读取对象属性值。
内容的提问来源于stack exchange,提问作者ashwin naik
相关产品推荐
相关产品推荐

