jsonb_to_recordset转换JSONB数组为记录集时是否始终保持原顺序?
关于jsonb_to_recordset是否保持JSON数组元素顺序的解答
嘿,这个问题问到点子上了——是的,jsonb_to_recordset 会严格按照原JSONB数组的元素顺序返回记录集。
PostgreSQL里的jsonb类型会完整保留JSON数组的元素顺序信息,而jsonb_to_recordset在解析数组生成记录集时,完全遵循这个原始顺序来生成每一行记录。毕竟JSON数组本身就是有序结构(和JSON对象的无序键不同),PostgreSQL在处理这类转换时不会打乱这个顺序。
举个实际的例子验证一下:
SELECT * FROM jsonb_to_recordset('[{"id":1,"name":"Alice"},{"id":2,"name":"Bob"},{"id":3,"name":"Charlie"}]'::jsonb) AS x(id int, name text);
执行这段查询后,返回的记录顺序会是Alice、Bob、Charlie,和原数组里的元素顺序完全一致。
不过要提个小注意:如果后续你对返回的记录集手动加了ORDER BY这类排序操作,那顺序肯定会被改变;但如果没有额外的排序干预,jsonb_to_recordset的输出顺序绝对和原JSON数组保持一致。
内容的提问来源于stack exchange,提问作者mrSpear
相关产品推荐
相关产品推荐

