PostgreSQL中如何将row_to_json输出的bytea字段转为Base64编码?
在PostgreSQL中用row_to_json输出Base64格式的bytea字段
当然可以实现这个需求!PostgreSQL内置的encode()函数正好能帮你把bytea类型的数据转换成Base64编码,结合row_to_json()一起用就能得到你想要的输出。
核心思路
默认情况下,row_to_json()会把bytea字段输出为十六进制字符串(比如\x0102030405),而encode(bytea_column, 'base64')可以直接将bytea数据编码为Base64格式,我们只需要在生成JSON前先处理这个字段即可。
具体示例
假设你有一张表test_table,其中f1是bytea类型的字段,想要把整行数据转成JSON且f1为Base64格式,可以用下面的SQL:
SELECT row_to_json(t) FROM ( SELECT encode(f1, 'base64') AS f1 FROM test_table ) t;
如果你的表还有其他字段需要保留,只需要在子查询里一并列出就行:
SELECT row_to_json(t) FROM ( SELECT id, username, encode(f1, 'base64') AS f1 FROM test_table ) t;
执行这个查询后,你就能得到类似{"f1":"AQIDBAU="}的期望输出了。这个方法在PostgreSQL 9.3及以上版本都能正常工作,因为encode()函数是从这个版本开始稳定支持的。
内容的提问来源于stack exchange,提问作者Ratlos
相关产品推荐
相关产品推荐

