如何在SQL Server表中创建answer列存储键值对并查询res值
创建answer列存储多组答案并查询res值
步骤1:创建answer列
添加JSON类型的answer列,通过CHECK约束确保格式合法:
ALTER TABLE 学生表名 ADD answer NVARCHAR(MAX) CHECK (ISJSON(answer) = 1);
步骤2:插入多组答案数据
示例:插入学生Mihir的单组或多组答案(多组需用JSON数组包裹):
-- 单组答案 INSERT INTO 学生表名(学生姓名, answer) VALUES ('Mihir', '{"asn":"que1","res":34}'); -- 多组答案 INSERT INTO 学生表名(学生姓名, answer) VALUES ('Mihir', '[{"asn":"que1","res":34}, {"asn":"que2","res":56}]');
步骤3:查询res值
单组答案行提取res值
用JSON_VALUE直接提取指定键的值:
SELECT 学生姓名, JSON_VALUE(answer, '$.res') AS res值 FROM 学生表名 WHERE 学生姓名 = 'Mihir';
多组答案行拆分提取所有res值
用OPENJSON解析JSON数组,将每组答案拆分为单独行:
SELECT s.学生姓名, j.asn, j.res FROM 学生表名 s CROSS APPLY OPENJSON(s.answer) WITH ( asn NVARCHAR(50) '$.asn', res INT '$.res' ) j WHERE s.学生姓名 = 'Mihir';
内容的提问来源于stack exchange,提问作者Aarsh Prajapati
相关产品推荐
相关产品推荐

