Postgres jsonb如何检查一些值不为空

时间:2018-10-10 08:05:20

标签: sql postgresql jsonb

我有一个jsonb值

{"mts": "375", "tele2": "", "beeline": "56", "megafon": "377"}

a如何检查例如mts和megafon不为空

我的查询是

select * 
from test 
where settings->>'megafon' <> '' 
   or settings->>'mts' <> '' 
   or settings->>'beeline' <> ''

但是查询时间如此长,如何写短条件?

1 个答案:

答案 0 :(得分:2)

SELECT * FROM
    jsonb_each_text('{"mts": "", "tele2": "", "beeline": "56", "megafon": "377"}'::jsonb)
WHERE value != ''

json_each_text()将每个json元素作为文本元素扩展为一行。结果是一个包含列keyvalue的表。

现在,您可以为每种内容过滤value列。

https://www.postgresql.org/docs/current/static/functions-json.html

相关问题