Sql server JSON解析SQL Server
正在寻找将子元素解析为行的方法 如何解析此JSON并获取作为行的预算选项以及其他列 假设该表有Sql server JSON解析SQL Server,sql-server,tsql,Sql Server,Tsql,正在寻找将子元素解析为行的方法 如何解析此JSON并获取作为行的预算选项以及其他列 假设该表有Id、Col1、Col2、Recommendation列,其中Recommendation包含JSON文本,其值如下: { "currentBudgetAmountMicros": "100000000", "recommendedBudgetAmountMicros": "210000000", "b
Id、Col1、Col2、Recommendation
列,其中Recommendation
包含JSON文本,其值如下:
{
"currentBudgetAmountMicros": "100000000",
"recommendedBudgetAmountMicros": "210000000",
"budgetOptions": [
{
"budgetAmountMicros": "100000000",
"impact": {
"baseMetrics": {
"impressions": 10719,
"clicks": 1811,
"costMicros": "547948333",
"conversions": 16.23
},
"potentialMetrics": {
"impressions": 10719,
"clicks": 1811,
"costMicros": "547948333",
"conversions": 16.23
}
}
},
{
"budgetAmountMicros": "210000000",
"impact": {
"baseMetrics": {
"impressions": 10719,
"clicks": 1811,
"costMicros": "547948333",
"conversions": 16.23
},
"potentialMetrics": {
"impressions": 13824,
"clicks": 2400,
"costMicros": "736541993",
"conversions": 21.51
}
}
}
]
}
像这样的
Json数据
declare @json nvarchar(max)=N'
{
"currentBudgetAmountMicros": "100000000",
"recommendedBudgetAmountMicros": "210000000",
"budgetOptions": [
{
"budgetAmountMicros": "100000000",
"impact": {
"baseMetrics": {
"impressions": 10719,
"clicks": 1811,
"costMicros": "547948333",
"conversions": 16.23
},
"potentialMetrics": {
"impressions": 10719,
"clicks": 1811,
"costMicros": "547948333",
"conversions": 16.23
}
}
},
{
"budgetAmountMicros": "210000000",
"impact": {
"baseMetrics": {
"impressions": 10719,
"clicks": 1811,
"costMicros": "547948333",
"conversions": 16.23
},
"potentialMetrics": {
"impressions": 13824,
"clicks": 2400,
"costMicros": "736541993",
"conversions": 21.51
}
}
}
]
}';
质疑
输出
currentBudgetAmountMicros recommendedBudgetAmountMicros budgetAmountMicros bm_impressions bm_clicks bm_costMicros bm_conversions pm_impressions pm_clicks pm_costMicros pm_conversions
100000000 210000000 100000000 10719 1811 547948333 16.23 10719 1811 547948333 16.23
100000000 210000000 210000000 10719 1811 547948333 16.23 13824 2400 736541993 21.51
请以表格文本的形式向我们展示您想要的结果。这些答案和评论有帮助吗?请告诉我们你试过什么。
currentBudgetAmountMicros recommendedBudgetAmountMicros budgetAmountMicros bm_impressions bm_clicks bm_costMicros bm_conversions pm_impressions pm_clicks pm_costMicros pm_conversions
100000000 210000000 100000000 10719 1811 547948333 16.23 10719 1811 547948333 16.23
100000000 210000000 210000000 10719 1811 547948333 16.23 13824 2400 736541993 21.51
select
bop.currentBudgetAmountMicros, bop.recommendedBudgetAmountMicros,
bam.*
from openjson(@json)
with
(
currentBudgetAmountMicros varchar(20),
recommendedBudgetAmountMicros varchar(20),
budgetOptions nvarchar(max) as json
) as bop
cross apply openjson(bop.budgetOptions)
with
(
budgetAmountMicros varchar(20),
--basemetrics
base_impressions int '$.impact.baseMetrics.impressions',
base_clicks int '$.impact.baseMetrics.clicks',
base_costMicros varchar(20) '$.impact.baseMetrics.costMicros',
base_conversions decimal(9,2) '$.impact.baseMetrics.conversions',
--potentialmetrics
potential_impressions int '$.impact.potentialMetrics.impressions',
potential_clicks int '$.impact.potentialMetrics.clicks',
potential_costMicros varchar(20) '$.impact.potentialMetrics.costMicros',
potential_conversions decimal(9,2) '$.impact.potentialMetrics.conversions'
) as bam