如何用Couchbase Query生成键值对格式统计结果及优化空值判断
问题解答
1. 获取预期格式的查询结果
可以通过N1QL的动态对象键语法实现你想要的结果格式,修改后的查询语句如下:
SELECT OBJECT status: COUNT(*) END FROM workflow WHERE type = "task" AND appId = "72689c67-f5d1-474a-8802-77f332144b12" AND status != "" GROUP BY status;
执行后会直接返回你期望的格式:
[ { "Completed": 2 }, { "New": 3 } ]
也可以用简化的动态键写法,效果完全一致:
SELECT { [status]: COUNT(*) } FROM workflow WHERE type = "task" AND appId = "72689c67-f5d1-474a-8802-77f332144b12" AND status != "" GROUP BY status;
2. status != "" 的替代写法
以下几种写法都能替代原条件,同时提升逻辑严谨性和扩展性:
- 过滤空值+纯空格:同时确保字段存在且不是空/纯空格字符串
status IS NOT MISSING AND TRIM(status) != "" - 利用字符串排序特性:空字符串是字符串类型的最小值,非空字符串均大于空串
status > "" - 正则匹配有效内容:匹配至少包含一个非空白字符的字符串
REGEXP_LIKE(status, "^\\s*\\S+\\s*$")
内容的提问来源于stack exchange,提问作者Sweta Sharma
相关产品推荐
相关产品推荐

