我的plsql过程有一个jsonb参数,数据为{1 = 2,2 = 3}。我的表格包含以下数据,
att_name |att_key |att_value
abcd |1 |2
bcde |2 |3
efgh |1 |3
我想过滤掉应该根据jsonb输入动态生成的(att_key = 1 and att_value = 2)或(att_key = 2 and att_value = 3)的数据,输出将仅包含abcd和bcde。有什么方法可以在postgresql中动态创建此查询。
答案 0 :(得分:0)
{1=2,2=3}
不是有效的JSON。
我认为您的意思是{"1":"2","2":"3"}
。
您可以使用json_each_text
转换为键值对(文本)并轻松进行比较。
SELECT *
FROM t
WHERE ( att_key, att_value ) IN (SELECT inp.key :: INT, inp.VALUE :: INT
FROM json_each_text('{"1":"2","2":"3"}') AS inp );