У меня есть текстовое поле с именем json_col
в моей таблице postgres (версия 10). Я пытаюсь расширить два массива MyArray
и impressions
на несколько строк, используя SQL
select
json_col::json -> 'content'->>'objectID' as objectID
,json_array_elements_text(json_col::json -> 'content'->'MyArray') as MyArrayValue
,json_array_elements(json_col::json -> 'content'->'impressions')->>'intent' as intent
from my_pg_table
образцы данных
{ "content": {
"objectID": "ABC",
"ObjectType": "MyType",
"MyArray": [
"Blue",
"Black"
],
"impressions": [
{
"intent": "Large"
},
{
"intent": "Small"
},
{
"intent": "Regular"
},
{
"intent": "Medium"
}
] } }
На выходе я получаю внешний массив (показы), как и ожидалось. Также первый массив (MyArray) расширяется до нескольких строк, но он не создает строку для каждой записи, созданной первым расширением массива.
Я получаю такой вывод.
objectID intent MyArrayValue
ABC Large Blue
ABC Small Black
ABC Regular [NULL]
ABC Medium [NULL]
Но я ищу вывод, как показано ниже.
objectID intent MyArrayValue
ABC Large Blue
ABC Large Black
ABC Small Blue
ABC Small Black
ABC Regular Blue
ABC Regular Black
ABC Medium Blue
ABC Medium Black
Пожалуйста, дайте мне знать, если у вас есть какие-либо данные.