Искам да използвам json_array_elements за разширяване на json масив. Но тя работи толкова добре. Pls виж по-долу.
изберете 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 реда)
Изглежда, когато дължината на масивите е равна, нещо се обърка. Може ли някой да ми каже защо е така.
Отговори:
0 за отговор № 1PostgreSQL повтаря всеки списък, докато и двамата съвпадат едновременно.
С други думи, дължината на списъка с резултати е най-малко общо кратно от дължината на входните списъци.
Това поведение наистина е странно и ще се промени в 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)
От послание:
Докато се преместваше оценката на SRF към ProjectSet, щепозволявайте да запазите старата "най-малко често срещано множество", когато има множество SRF в едно целевия списък (т.е. продължете да връщате редове, докато всички SRF не са в края на техния принос в същото време), решихме вместо това да връщаме само редове до всички SRF са изчерпани, връщайки NULL за вече изчерпани такива. ние смята, че предишното поведение е твърде объркващо, неочаквано и всъщност не особено полезни.