You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在SQL Server中提取JSON对象数据并插入临时表的方案咨询

解决方案:从SQL Server JSON列提取数据插入临时表

没问题,我来帮你搞定这个需求!核心思路是用SQL Server自带的OPENJSON函数解析JSON数组,把数组里的每个对象拆成单独的行,再关联原表的EntryId,最后插入到临时表中。

步骤1:创建目标临时表

如果临时表还不存在,先执行下面的语句创建它(注意根据你原表EntryId的实际类型调整字段类型,比如INT/UNIQUEIDENTIFIER等):

CREATE TABLE #TempTable (
    EntryId INT,
    Name NVARCHAR(100),
    Note NVARCHAR(MAX),
    Description NVARCHAR(MAX)
);

步骤2:提取JSON数据并插入临时表

假设你的原表名为YourTable,存储JSON数组的列名为JsonDataColumn,执行下面的语句就能完成数据提取和插入:

INSERT INTO #TempTable (EntryId, Name, Note, Description)
SELECT 
    t.EntryId,
    j.Name,
    j.Note,
    j.Description
FROM YourTable t
CROSS APPLY OPENJSON(t.JsonDataColumn)
WITH (
    Name NVARCHAR(100) '$.Name',
    Note NVARCHAR(MAX) '$.Note',
    Description NVARCHAR(MAX) '$.Description'
) j;

关键部分解释

  • CROSS APPLY OPENJSON(t.JsonDataColumn):OPENJSON会把JSON数组拆分成多行记录,CROSS APPLY相当于把原表的每一行和对应的JSON数组展开后的行进行关联,这样每个JSON对象都会对应原表的一个EntryId。
  • WITH子句:用来定义JSON属性和输出列的映射关系,$.Name表示取JSON对象里的Name属性值,其他字段同理。

可选优化:处理无效JSON

如果你的JsonDataColumn可能存在NULL或者无效JSON,可以加个判断过滤掉这些行,避免报错:

INSERT INTO #TempTable (EntryId, Name, Note, Description)
SELECT 
    t.EntryId,
    j.Name,
    j.Note,
    j.Description
FROM YourTable t
WHERE ISJSON(t.JsonDataColumn) = 1 -- 只处理有效的JSON数据
CROSS APPLY OPENJSON(t.JsonDataColumn)
WITH (
    Name NVARCHAR(100) '$.Name',
    Note NVARCHAR(MAX) '$.Note',
    Description NVARCHAR(MAX) '$.Description'
) j;

这样就能完美实现你要的效果啦!

内容的提问来源于stack exchange,提问作者Cipher

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.09 10:22:39