使用 OPENJson 向表中插入数据

Posted

技术标签:

【中文标题】使用 OPENJson 向表中插入数据【英文标题】:Insert data into a table using OPENJson 【发布时间】:2020-11-12 18:26:36 【问题描述】:

我有以下 Json 需要插入到表中

"errorMessage":"","requestOutput":   "REQUEST_ID" : 100910,   "STATUS_CODE" : "P",   "PHASE_CODE" : 
 "N",   "COMPLETION_TEXT" : null 

这是我用来处理 json 并插入到表中的查询

INSERT INTO dbo.tblRequest_Details([RequestId]
      ,[Error_Message]
      ,[Status_Code]
      ,[Phase_Code]
      ,[Completion_Text])
    SELECT  [RequestId]
      ,[Error_Message]
      ,[Status_Code]
      ,[Phase_Code]
      ,[Completion_Text]
    FROM OPENJSON((select * from @json2), N'$.requestOutput')
    WITH (  
             [RequestId]   nvarchar(max) N'$.REQUEST_ID',
             [Status_Code]   nvarchar(max) N'$.STATUS_CODE',
             [Phase_Code]   nvarchar(max) N'$.PHASE_CODE',
             [Completion_Text]   nvarchar(max) N'$.COMPLETION_TEXT')            
             CROSS APPLY OPENJSON((select * from @json2), N'$.errorMessage')
              WITH( [Error_Message] nvarchar(max) N'$.errorMessage'
        
    ) 

但由于某种原因,数据没有插入到表中。 我做错了什么?

谢谢

【问题讨论】:

【参考方案1】:

原来 errorMessage 字段有错误,所以我删除了交叉应用。而是将 errorMessage 的值分配给一个变量并使用它。

【讨论】:

以上是关于使用 OPENJson 向表中插入数据的主要内容,如果未能解决你的问题,请参考以下文章

向表中批量插入数据

使用insert语句避免向表中插入重复数据

如何向表中插入数据以及如何更新删除表中的数据

解决MySQL向表中增加数据插入中文乱码问题

如何使用mysql语句向表中插入数据

oracle/sql中如何根据条件向表中插入数据