如何在SSMS中基于现有列内容创建SQL新列MessageCode
在SSMS中提取Action列的MessageCode并生成目标表
方式一:直接查询生成包含MessageCode的结果集
如果只是需要查看数据,不需要永久修改表结构,可以用JSON_VALUE函数直接提取JSON中的MessageCode值:
SELECT ID, Title, Enabled, JSON_VALUE(Action, '$[0].Results[0].MessageCode') AS MessageCode, Action AS Actions FROM 你的表名;
路径说明:
$[0]:定位到Action列JSON数组的第一个元素.Results[0]:定位到该元素下Results数组的第一个元素.MessageCode:提取对应位置的数字值
方式二:新增永久列并填充数据
如果需要把MessageCode作为表的固定列:
- 新增MessageCode列
ALTER TABLE 你的表名 ADD MessageCode INT;
- 填充列数据
UPDATE 你的表名 SET MessageCode = JSON_VALUE(Action, '$[0].Results[0].MessageCode') -- 过滤掉无效JSON或空值的行,避免报错 WHERE Action IS NOT NULL AND ISJSON(Action) = 1;
注意事项
- 该方案适用于SQL Server 2016及以上版本(这些版本支持JSON函数)
- 如果Action列的JSON结构存在多个Results元素,需要用
OPENJSON进行多行解析,示例语句基于你提供的单元素结构编写 - 执行更新前建议先备份数据,或用SELECT语句验证提取结果是否正确
内容的提问来源于stack exchange,提问作者Kreeshee
相关产品推荐
相关产品推荐

