栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

如何在SQL Server中将数据更新为JSON数组并选择数据作为JSON数组

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

如何在SQL Server中将数据更新为JSON数组并选择数据作为JSON数组

一种可能的方法是使用

OPENJSON()
默认模式解析具有ID的JSON数组,然后生成具有名称的JSON数组。在
OPENJSON()
默认模式返回与列的表格
key
value
type
key
列保存每个项目的索引。请注意,这里重要的部分是按照与IDs
JSON数组中存在的名称相同的顺序生成名称。您需要使用基于字符串聚合的方法,因为我不认为您可以使用生成具有标量值的JSON数组
FOR JSON

表格:

create table #subjectList(subjectID int identity(1,1),subjectName varchar(50))insert into #subjectList(subjectName)select 'Math' union allselect 'English' union allselect 'Hindi' union allselect 'PC' union allselect 'Physics'Create table #studentList(studentID int identity(1,1), subjectName varchar(50), choseSubjectList varchar(max))insert into #studentList(subjectName, choseSubjectList)Select 'A','["1","2"]' union allSelect 'B','["3","2","5"]' union allSelect 'C','["6","2"]'create table #studentWithSubject(studentID int,subjectName varchar(50),choseSubjectIDList varchar(max),choseSubjectNameList varchar(max))insert into #studentWithSubject(studentID,subjectName,choseSubjectIDList)Select a.studentID,a.studentID,a.choseSubjectListfrom #studentList a

陈述:

UPDATe #studentWithSubjectSET choseSubjectNameList = (    CONCAt(       '["',       STUFF(          (SELECT CONCAt('","', COALESCE(s.subjectName, ''))          FROM OPENJSON(#studentWithSubject.choseSubjectIDList) j          LEFT JOIN #subjectList s ON j.[value] = s.subjectID          ORDER BY ConVERT(int, j.[key])          FOR XML PATH('')), 1, 3, ''       ),       '"]'    )   )

结果:

studentID   subjectName choseSubjectIDList  choseSubjectNameList11["1","2"]["Math","English"]22["3","2","5"]       ["Hindi","English","Physics"]33["6","2"]["","English"]


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/431534.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号