postgresql中jsonb格式的数据如何进行查询过滤
背景
{"resultStatus":"success","resultCode":"100","resultMsg":"成功!","data":null}
上述是postgresql中 jsonb格式的数据,根据json中的resultMsg字段的值进行过滤的sql
根据jsonb类型字段中json中的某个属性值进行过滤
PostgreSQL jsonb字段按resultMsg过滤的SQL
若表名为 your_table,jsonb字段名为 json_data,过滤 resultMsg 为指定值的SQL如下:
1. 精确匹配(等于"成功!")
SELECT * FROM your_table
WHERE json_data ->> 'resultMsg' = '成功!';
- 说明 :
->>操作符提取jsonb字段中resultMsg的文本值,然后与目标字符串比较。
2. 模糊匹配(包含"成功"关键词)
SELECT * FROM your_table
WHERE json_data ->> 'resultMsg' LIKE '%成功%';
3. 结合其他条件(如resultStatus为"success")
SELECT * FROM your_table
WHERE
json_data ->> 'resultStatus' = 'success'
AND json_data ->> 'resultMsg' = '成功!';
关键语法说明
- -> :返回jsonb对象(保留json格式),如
json_data -> 'resultMsg'返回"成功!"(带引号)。 - ->> :返回文本字符串(去除引号),如
json_data ->> 'resultMsg'返回成功!(纯文本),适合直接比较。
根据实际需求选择操作符,精确匹配推荐用 ->>,效率更高。