我有一个包含两个属性列和一个json列的产品表。我希望能够分隔json列并插入额外的行,保留属性。示例数据如下:
ID Name Attributes
1 Nikon {"4e7a":["jpg","bmp","nef"],"604e":["en"]}
2 Canon {"4e7a":["jpg","bmp"],"604e":["en","jp","de"]}
3 Olympus {"902c":["yes"], "4e7a":["jpg","bmp"]}
我理解 OPENJSON 可以将 JSON 对象转换为行,将键值转换为单元格,但如何在包含 JSON 数据的单个列上应用它呢?
我的目标是获得以下输出:
ID Name key value
1 Nikon 902c NULL
1 Nikon 4e7a ["jpg","bmp","nef"]
1 Nikon 604e ["en"]
2 Canon 902c NULL
2 Canon 4e7a ["jpg","bmp"]
2 Canon 604e ["en","jp","de"]
3 Olympus 902c ["yes"]
3 Olympus 4e7a ["jpg","bmp"]
3 Olympus 604e NULL
有没有办法可以像这样查询产品表?或者有没有办法重现我的目标数据集?
SELECT
ID,
Name,
OPENJSON(Attributes)
FROM products
谢谢!