Как я могу убедиться, что возвращаемое значение является массивом? - PullRequest
1 голос
/ 20 февраля 2020

Я использую оператор COALESCE, чтобы убедиться, что я возвращаю согласованный набор данных.

Запрос выглядит следующим образом

SELECT c.id, c.ItemLevel, c.ItemNo, bv.variantId, bv.variantDescription, c.DetailedData.locales[0].images ?? c.BasicData.asset.assets[0].locations[1].path AS images, c.PriceData.WhitePrice, c.PriceData.RedPrice, c.PriceData.DiscountPercentage, c.PriceData.TypeOfDiscount
FROM c
JOIN bv IN c.BasicData.base.sales.variants
WHERE c.brand = 'XXX'
AND c.Consumer = 'YYY'
AND bv.variantId = 'TTT'
AND c.Season = 'XXX'

Моя проблема заключается в том, что c.DetailedData.locales[0].images является массивом, но c.BasicData.asset.assets[0].locations[1].path - это не так.

Мне нужно, чтобы c.BasicData.asset.assets[0].locations[1].path был массивом, чтобы возвращаемый JSON был согласованным, чтобы я мог * oop массив в моем мобильном приложении напрямую.

Как это можно сделать?

1 Ответ

1 голос
/ 20 февраля 2020

Я могу получить ваши очки.

Например, у вас есть ниже 2 образца документов:

[
    {
        "DetailedData": {
            "locales": [
                {
                    "images": [
                        {
                            "image": "pic1"
                        },
                        {
                            "image": "pic2"
                        }
                    ]
                }
            ]
        }
    },
    {
        "DetailedData": {},
        "BasicData": {
            "asset": {
                "assets": [
                    {
                        "locations": [
                            {
                                "path": "AAA"
                            },
                            {
                                "path": "BBB"
                            }
                        ]
                    }
                ]
            }
        }
    }
]

Если вы выполните sql, вы получите другой формат:

SELECT c.DetailedData.locales[0].images ?? c.BasicData.asset.assets[0].locations[1].path AS images
FROM c

enter image description here

Вы можете добавить [] для сброса столбца, например:

SELECT c.DetailedData.locales[0].images ?? [{"image": c.BasicData.asset.assets[0].locations[1].path}] AS images
FROM c

Вывод:

enter image description here

...