PostgreSQL中如何拼接指定JSON键值将JSON转换为字符串
在PostgreSQL中将JSON数组转换为指定格式字符串的实现方法
直接处理JSON字面量的SQL语句
如果你的JSON是字面量形式,可以用以下语句直接转换:
SELECT CONCAT( string_agg(obj->>'name', '-'), ' ', string_agg(obj->>'strength', '-') ) AS formatted_result FROM jsonb_array_elements('[{"name": "X", "strength": "10"}, {"name": "Y", "strength": "30"}]'::jsonb) AS obj;
处理表中JSON字段的情况
如果JSON数据存储在表的字段中(比如表character_stats有stats_data字段),可以调整为:
SELECT CONCAT( string_agg(obj->>'name', '-'), ' ', string_agg(obj->>'strength', '-') ) AS formatted_result FROM character_stats, jsonb_array_elements(stats_data::jsonb) AS obj;
关键函数说明
jsonb_array_elements:将JSON数组拆分为多行独立的JSON对象(如果你的字段是json类型而非jsonb,替换为json_array_elements即可)obj->>'name':从JSON对象中提取name字段的文本值(->>运算符会返回不带引号的纯文本,避免后续拼接出现多余引号)string_agg(col, '-'):将多行的字段值用-连接成单个字符串,分别处理name和strength列CONCAT():将两个连接后的字符串用空格拼接,得到最终的目标格式
内容的提问来源于stack exchange,提问作者Aseem
相关产品推荐
相关产品推荐

