json - 如何使用 JSON_MODIFY 将 int json 值转换为单长数组?
问题描述
我们有自定义过滤器的网格,您可以将过滤器作为 JSON 对象保存到特定表tblUserPersistedValue
(以及用户字段)。因此,我们正在更新页面,并且过滤器将从单选 ID 变为四个不同过滤器上的多选 ID。
当前的 JSON:
'{
"ProductGroupID":1,
"TerminalID":1,
"CarrierID":1221,
"RegionID":21,
"DriverDateFilter":0,
"DriverStartDate":"0001-01-01T00:00:00",
"DriverEndDate":"0001-01-01T00:00:00"
}';
如您所见"TerminalID":1
,我想将其更改为,"TerminalID":[1]
以便我们在进行更新时不会破坏任何用户的设置。不幸的是,我无法弄清楚如何使用JSON_MODIFY 创建一个 int 数组。
我快到了,但它将我保存在引号中的值包装起来,并且在反序列化期间不会解析为 int 数组。
我以前从未直接在 sql 中使用过 json,而且我一定遗漏了一些简单的东西。我如何解决它?如果无法覆盖现有条目,我还可以创建一个新的 TerminalIDs 条目来解析并删除旧条目。
最终目标是对表中的每条记录执行此操作,对四个字段中的每一个执行一次。
解决方案
declare @j nvarchar(max) = N'{"ProductGroupID":1,"TerminalID":1,"CarrierID":1221,"RegionID":21,"DriverDateFilter":0,"DriverStartDate":"0001-01-01T00:00:00","DriverEndDate":"0001-01-01T00:00:00"}';
select @j = json_modify(@j, '$.TerminalID', json_query(concat('[', json_value(@j, '$.TerminalID') ,']')));
select @j;
推荐阅读
- java - 无法从片段内部刷新 recyclveiw?
- ios - 按字母顺序将 NSMutableArray 数据动态排序到 NSDictionary
- c++ - 如何为每个循环传递一个成员函数?
- python - 识别 sqlalchemy.exc.OperationalError
- hadoop - Hive 中的数据透视表并为唯一组合创建多个列
- firebase - iPhone X 上没有出现通知气泡
- javascript - 从 ajax 调用返回到 django 视图的清洁日期字段
- ios - 无法接收任何用户登录的弹出窗口或提示
- c# - 难以通过反射使用 System.IO.Compression.ZipArchive 访问可见属性
- typescript - 是否可以输入“spreadCall”方法?带有条件类型和推断的谜题