PostgreSQL中提取JSON字典值为true的键的方法
PostgreSQL JSON列提取值为true的键并拼接成列表
假设你的表名为your_table,存储颜色状态的JSON列名为color_status,可以用以下SQL语句实现需求:
针对JSON类型列:
SELECT string_agg(key, ', ') AS true_colors FROM your_table, json_each(color_status) WHERE value = 'true'::jsonb;
针对JSONB类型列(推荐,性能更优):
SELECT string_agg(key, ', ') AS true_colors FROM your_table, jsonb_each(color_status) WHERE value = true;
语句说明:
json_each()/jsonb_each():将JSON列的键值对拆分为多行记录,每行包含key(颜色名称)和value(对应的布尔值)WHERE子句:过滤出值为true的记录string_agg():将符合条件的颜色名称用逗号加空格拼接成字符串
这个方案不需要枚举任何颜色,后续新增颜色时无需修改SQL语句,会自动纳入结果。
内容的提问来源于stack exchange,提问作者Shir
相关产品推荐
相关产品推荐

