我想使用json_array_元素来扩展json数组。但它真的很管用。请看下面。
选择json_array_elements('[1,2]')作为a,json_array_elements('[2,3,4]')作为b;

a | b
---+---
1 | 2
2 | 3
1 | 4
2 | 2
1 | 3
2 | 4

(6行)
选择json_array_elements('[1,2]')作为a,json_array_elements('[2,3]')作为b;
a | b
---+---
1 | 2
2 | 3

(2行)
当数组的长度相等时,似乎有问题。
有谁能告诉我,为什么会这样。

最佳答案

PostgreSQL重复每个列表,直到两个列表恰好同时位于末尾。
换句话说,结果列表的长度是输入列表长度的least common multiple
这种行为确实很奇怪,在PostgreSQL v10中会有所改变:

select json_array_elements('[1, 2]') as a, json_array_elements('[2, 3, 4]') as b;
 a | b
---+---
 1 | 2
 2 | 3
   | 4
(3 rows)

commit message开始:
而将SRF评估移到ProjectSet将允许保留旧的
当一个中存在多个srf时,“最不常见的多个”行为
目标列表(即继续返回行,直到所有srf都在
同时,我们决定只返回行,直到
所有srf都已耗尽,对于已耗尽的srf返回NULL。我们
认为以前的行为太混乱,出乎意料
不是特别有用。

07-26 05:08