You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

咨询PostgreSQL中WHERE子句使用JSONB查询id=203498所有行的SQL语句写法

查询PostgreSQL中包含JSONB字段且id=203498的行

没问题,我来帮你梳理两种常见的情况——因为你没明确说明这个id是表的普通列,还是JSONB字段里的嵌套属性,所以我把两种场景都覆盖到:

场景1:id是表的普通列(非JSONB字段)

这是最基础的查询,不管表中有没有JSONB字段,语法都和普通查询一致,只需要替换成你的实际表名即可:

SELECT * FROM your_table_name WHERE id = 203498;

提示:把your_table_name换成你实际的表名称

场景2:id是JSONB字段里的嵌套属性

假设你的JSONB字段名叫json_data(同样要替换成你实际的字段名),这里有两种常用的查询方式:

方式1:使用->>提取文本值匹配

->>操作符会从JSONB字段中提取指定键的文本值,适合直接匹配字符串类型的id:

SELECT * FROM your_table_name WHERE json_data->>'id' = '203498';

如果JSONB里的id是数字类型,你可以把提取的值转换成整数再匹配,避免类型不匹配的问题:

SELECT * FROM your_table_name WHERE (json_data->>'id')::integer = 203498;

方式2:使用@>进行包含匹配

@>操作符用于检查JSONB字段是否包含指定的JSON对象,这种方式更贴合JSON的结构,如果你给JSONB字段创建了GIN索引,查询性能会更好:

SELECT * FROM your_table_name WHERE json_data @> '{"id": 203498}'::jsonb;

提示:如果需要经常基于JSONB里的id查询,建议创建GIN索引提升性能:

CREATE INDEX idx_your_table_json_data_gin ON your_table_name USING GIN (json_data);

内容的提问来源于stack exchange,提问作者sagar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.30 09:08:12