从 JSON 格式的 SQL 列中提取值

问题描述

我需要从具有 JSON 格式的列中提取值。 这是该列的表中行之一的示例,这里有两个 operatorKeys,但在其他行中可能有更多:

{
"officeId": "office8685","TypeOfOffice": null,"Telefonnummer": "","Operatorer": [
    {
        "OperatorKey": "1","OperatorUserID": {
            "Agency": "Other","AgencySpecified": true,"Value": "TM-Oper-1"
        },"ContactInformation": {
            "FirstName": "mike","LastName": null,"Address": {
                "Street": null,"City": null,"Province": null,"Country": null
            },"Phone": null,"Fax": null,"Email": null,}
    },{
        "OperatorKey": "4","Value": "TM-Oper-4"
        },"ContactInformation": {
            "FirstName": "xxx",}
    }       
]

}

这是我尝试读取 JSON 的 SQL 视图,我使用 openjsoncross apply 读取值:

Alter view  dbo.vOffice as 
select
      column1,column2
      --,column3 --this column contains values with json format,OfficId,TypeOfOffice,Telefonnummer,Operatorer,OperatorKey,OperatorUserID,ContactInformation,Agency,AgencySpecified,[Value],FirstName,LastName,[Address],Phone,Fax,Email 
FROM [produktion_dim].[VirkesverdeStandardSCD1]
CROSS APPLY OPENJSON (column3,'$.OfficId') with (
OfficId varchar(4096)   '$.OfficId',TypeOfOffice varchar(4096)  '$.TypeOfOffice',Telefonnummer varchar(4096) '$.Telefonnummer',Operatorer varchar(4096)  '$.Operatorer')
cross apply openjson(Operatorer,'$')  with(OperatorKey  varchar(4096)  '$.OperatorKey',OperatorUserID varchar(4096) '$.OperatorUserID',ContactInformation     varchar(4096)  '$.ContactInformation')
cross apply openjson(OperatorUserID,'$') with ( Agency varchar(4096) '$.Agency',AgencySpecified varchar(4096) '$.AgencySpecified',[Value]                           varchar(4096)   '$.Value'   )
cross apply openjson( ContactInformation,'$') with (FirstName                              varchar(4096)   '$.FirstName',LastName varchar(4096)    '$.LastName',[Address] varchar(4096)    '$.Address',Phone   varchar(4096)   '$.Phone',Fax       varchar(4096)   '$.Fax',Email   varchar(4096)   '$.Email')
cross apply openjson([Address],'$') with ( Street varchar(4096) '$.Street',City varchar(4096)  '$.City',Province varchar(4096) '$.Province',Country    varchar(4096) '$.Country')

但是我遇到了错误。您能告诉我 SQL 视图中缺少什么或应该更改什么吗?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)