我有一个带有两个属性列的产品表和一个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"]}
Run Code Online (Sandbox Code Playgroud)
我知道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
Run Code Online (Sandbox Code Playgroud)
有没有办法可以查询这个产品表?或者有没有办法重现我的目标数据集?
SELECT
ID,
Name,
OPENJSON(Attributes)
FROM products
Run Code Online (Sandbox Code Playgroud)
谢谢!
我有一个名为“属性”的列,其中包含一个 JSON blob。该 blob 在一行中可以有单个或多个键:值。
以下是 3 行简化的示例数据:
{"68c4":["yes"], "c8ew":["0","1"], "p6i4":["London","Frankfurt","Tokyo"]}
{"472h":["USD"], "c8ew":["-1","9"], "p6i4":["New York"]}
{"472h":["EUR","JPY"]}
Run Code Online (Sandbox Code Playgroud)
密钥是 UUID,我需要用人类可读的组件替换它们
我知道我可以写这样的东西:
SELECT JSON_MODIFY(attributes, '$."p6i4"', 'City') AS modified
Run Code Online (Sandbox Code Playgroud)
但这改变了价值。我的问题是我需要更改密钥。有谁知道如何做到这一点?