json - SQL修改替换json字符串值
问题描述
是否可以通过以下方式更改 sub-json-data 的值?
DECLARE @json NVARCHAR(MAX) = "{"message":"Machine is down","machineId":"165ACE37-4E2C-4D44-9D14-F9E2CB2C2C13","machineName":"1501","ipAddress":"192.168.150.101","time":"2018-05-20T18:33:23.171"}"
SELECT * FROM OPENJSON(@json)
WITH ( message varchar(200) '$.message',
machineId varchar(200) '$.machineId',
machineName int '$.machineName',
ipAddress varchar(200) '$.ipAddress',
LocalTime datetime2(7) '$.time'
) AS ChangeTime
我想更改我创建的 LocalTime 变量,然后替换当前变量。
我想从 $.time 参数中删除两个小时。
像这样的东西:
UPDATE Table SET ChangeTime.LocalTime = DATEADD(hour,-2,ChangeTime.LocalTime)
输入:" time":"2018-05-20T18:33:23.171"
输出:
"time":"2018-05-20T16:33:23.171"
我将如何做到这一点?
解决方案
你可以使用JSON_MODIFY
:
更新 JSON 字符串中的属性值并返回更新后的 JSON 字符串。
SET @json=JSON_MODIFY(@json,'$.time',
FORMAT(DATEADD(hour,-2,JSON_VALUE(@json,'$.time')),'yyyy-MM-ddTHH:mm:ss.fff'));
SELECT * FROM OPENJSON(@json)
WITH ( message varchar(200) '$.message',
machineId varchar(200) '$.machineId',
machineName int '$.machineName',
ipAddress varchar(200) '$.ipAddress',
LocalTime datetime2(7) '$.time'
) AS ChangeTime;
推荐阅读
- python - 如何获取与 kafka-python 中的主题相关联的消费者组列表?
- sql - 根据条件将表中的数据拆分为 2 列
- xpath - 基于元素部分匹配拉节点的xpath
- swift - instanceViewController 在单元测试中抛出 SIGABRT
- android - 如何在 Android 中以编程方式创建文件夹
- javascript - 遍历 JSON 并找到匹配的名称以返回 ID
- powershell - Powershell 无法访问对象属性字段和值
- java - 如何获取测试中每个步骤的详细信息?
- reactjs - 将反应输入掩码 (InputMask) 与 formik 一起使用
- python - 为什么一组总数中的最佳函数时间小于最后一次函数调用?