gpt4 book ai didi

sql-server - 将 OPENJSON 应用于单个列

转载 作者:行者123 更新时间:2023-12-02 18:02:19 25 4
gpt4 key购买 nike

我有一个产品表,其中有两个属性列和一个 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

谢谢!

最佳答案

这里至少可以让您朝着正确的方向前进。

SELECT P.ID, P.[Name], AttsData.[key], AttsData.[Value]
FROM products P CROSS APPLY OPENJSON (P.Attributes) AS AttsData

现在让我有点卡住的一件事是缺少值(结果中的值为 null)...

我正在考虑也许做某种外部/完全连接回到这个,但即使这样也让我头疼。你确定你需要那个吗?或者,您可以使用上面 SQL 的输出进行存在性检查吗?

我会坚持下去。如果我找到与您的输出完全匹配的解决方案,我将添加到此答案中。

在那之前...祝你好运!

关于sql-server - 将 OPENJSON 应用于单个列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42149879/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com