PostgreSQL如何将查询结果转为指定格式字符串以转换为HashMap?
解决方案
你可以用PostgreSQL自带的函数实现这个转换,推荐两种方式:
方式一:构造标准JSON字符串(更推荐)
用json_build_object函数把提取出的name和dob拼成标准JSON对象,再转成字符串。这种格式是通用的JSON结构,能直接被大多数语言解析成HashMap,比你指定的格式更规范。
执行查询:
SELECT json_build_object('name', data->>'name', 'dob', data->>'dob')::text AS result FROM TableA WHERE id = '1';
返回结果:
{"name":"abc","dob":"12-12-12"}
方式二:严格生成你指定的格式
如果一定要生成你给出的带外层双引号的格式,可以用字符串拼接的方式实现:
SELECT '" "name" : "' || data->>'name' || '" ,"dob" :"'" || data->>'dob' || '" "' AS result FROM TableA WHERE id = '1';
不过这种方式灵活性差,后续字段变动时需要手动修改拼接逻辑,不推荐长期使用。
另外提一句:你原表data字段里的code键值对有语法错误(少了冒号,应该是"code":"12O0X"),建议修正数据,避免后续JSON操作出问题。
内容的提问来源于stack exchange,提问作者Umar
相关产品推荐
相关产品推荐

