PostgreSQL JSON多条件查询求助:如何添加嵌套字段筛选条件
PostgreSQL嵌套JSON字段查询修正方案
你的查询写法存在几个关键问题:
desc是PostgreSQL保留关键字,作为JSON键名必须用单引号包裹- 访问嵌套JSON对象时,需先用
->获取内层对象,再用->>提取字段的文本值 - 原JSON中
Service的值是字符串类型的"123",条件匹配时要对应类型,或转为数值比较
正确查询语句(字符串匹配)
SELECT * FROM dbname WHERE tresc::json->>'user' LIKE '%login%' AND tresc::json->'desc'->>'Service' = '123' ORDER BY id asc;
正确查询语句(数值匹配,若需数值比较)
SELECT * FROM dbname WHERE tresc::json->>'user' LIKE '%login%' AND (tresc::json->'desc'->>'Service')::int = 123 ORDER BY id asc;
补充:若字段为jsonb类型(推荐使用)
可使用更简洁的包含查询操作符@>:
SELECT * FROM dbname WHERE tresc->>'user' LIKE '%login%' AND tresc @> '{"desc": {"Service": "123"}}'::jsonb ORDER BY id asc;
内容的提问来源于stack exchange,提问作者manafak
相关产品推荐
相关产品推荐

