PostgreSQL中如何查询info表JSON字段data内nickname匹配值?
PostgreSQL JSON类型字段查询实现
针对你提到的info表中JSON类型字段data的查询需求,正确的SQL写法有两种常用方式:
方式一:使用->>操作符(推荐)
->>操作符会将JSON字段内指定属性的值转换为文本类型,直接用于字符串比较:
SELECT * FROM info WHERE data->>'nickname' = 'SomeNickname';
方式二:使用json_extract_path_text函数
这是操作符的等价函数写法,逻辑完全一致:
SELECT * FROM info WHERE json_extract_path_text(data, 'nickname') = 'SomeNickname';
额外说明(可选优化)
如果你的data字段是JSONB类型(PostgreSQL推荐的二进制JSON类型),可以通过创建GIN索引提升查询效率,查询语句也可以写成:
-- 先创建索引 CREATE INDEX idx_info_data_nickname ON info USING GIN (data jsonb_path_ops); -- 高效查询 SELECT * FROM info WHERE data @> '{"nickname": "SomeNickname"}'::jsonb;
内容的提问来源于stack exchange,提问作者williambutcherthe99th
相关产品推荐
相关产品推荐

