【发布时间】:2017-04-27 08:12:22
【问题描述】:
我正在处理 SQL Azure 表/数据库中的 JSON 列,JSON 对象是这样形成的:
{
"statusId": "5A5BC717-F33A-42A5-8E48-99531C30EC87",
"creationDateTime": "",
"assignations": [
{
"userId": "CA3B0589-B558-4FCC-93A6-560754D324FC",
"dateTime": "",
"isCurrentAssigned": false
},
{
"userId": "CA3B0589-B558-4FCC-93A6-560754D325E8",
"dateTime": "",
"isCurrentAssigned": false
},
{
"userId": "CA3B0589-B558-4FCC-93A6-560754D347N",
"dateTime": "",
"isCurrentAssigned": true
}
]
}
我想要完成的是在数组“assignations”中找到一个特定元素,然后更新它的一些属性,就像:
UPDATE MyTable
SET JsonData = JSON_MODIFY(JsonData, '$.assignations.isCurrentAssigned', CONVERT(BIT, 0))
FROM MyDb
WHERE JSON_VALUE(JsonData, '$.assignations.isCurrentAssigned') = CONVERT(BIT, 1) AND
JSON_VALUE(JsonData, '$.assignations.userId') = CONVERT(UNIQUEIDENTIFIER, 'CA3B0589-B558-4FCC-93A6-560754D347N')
当然,这个 T-SQL 不工作,我将不胜感激任何帮助
【问题讨论】:
-
这可能与 stackoverflow.com/questions/40538714/… 有关 - 该解决方案的简化版本,仅处理数组成员(而不是数组的成员)可能适合您。
标签: tsql azure-sql-database sql-server-2016