我有一个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