sql - Postgres jsonb如何检查一些值不为空
问题描述
我有一个 jsonb 值
{"mts": "375", "tele2": "", "beeline": "56", "megafon": "377"}
例如,如何检查 mts 和 megafon 是否为空
我的查询是
select *
from test
where settings->>'megafon' <> ''
or settings->>'mts' <> ''
or settings->>'beeline' <> ''
但是这么长的查询,短的条件怎么写呢?
解决方案
SELECT * FROM
jsonb_each_text('{"mts": "", "tele2": "", "beeline": "56", "megafon": "377"}'::jsonb)
WHERE value != ''
json_each_text()
将每个 json 元素作为文本元素展开为一行。结果是一个包含列key
和的表value
。
现在您可以过滤value
每个内容的列。
https://www.postgresql.org/docs/current/static/functions-json.html
推荐阅读
- python - py 调用返回的大小大于分辨率
- javascript - 从众多输入之一中获得最高价值
- android - 是否可以在返回 LiveData 的 Room @DAO 中编写“挂起”函数?
- android - 如何在 xml 中编辑最上面导航栏的颜色?
- python-3.x - 检查点文件的加载方式/位置
- c++ - QQmlEngine retranslate not translating other StackView items
- apache-spark - 不支持重新分区后合并
- java - 片段中的自定义ListView,我需要什么文件?
- typescript - 对类型转换为 TypeScript 类型的变量调用`new`
- python - QTreeView 数据更改信号/插槽实现?