SQL Server中如何向JSON数组追加多个JSON值?
解决SQL Server中JSON数组批量追加元素的问题
问题原因
你当前的@features变量是多个独立JSON对象的字符串拼接,并非合法的JSON数组。JSON_QUERY函数只会解析并返回第一个有效的JSON对象,因此只有Feature1被追加到目标数组中。
解决方案
方案1:将@features改为合法JSON数组
直接把@features定义为标准JSON数组格式,再通过JSON_MODIFY的append操作批量追加元素:
DECLARE @features NVARCHAR(500)='[{"Name": "Feature1","IsEnabled": false},{"Name": "Feature2","IsEnabled": true},{"Name": "Feature3","IsEnabled": false}]' UPDATE JsonTable SET Content = JSON_MODIFY( Content, 'append $.Features', JSON_QUERY(@features) )
方案2:动态包装现有@features为数组
如果无法修改@features的原始格式,可先将其包装为合法JSON数组再处理:
DECLARE @features NVARCHAR(500)='{"Name": "Feature1","IsEnabled": false},{"Name": "Feature2","IsEnabled": true},{"Name": "Feature3","IsEnabled": false}' -- 拼接成合法JSON数组 SET @features = '[' + @features + ']' UPDATE JsonTable SET Content = JSON_MODIFY( Content, 'append $.Features', JSON_QUERY(@features) )
说明
使用JSON_QUERY的目的是让SQL Server将传入的字符串识别为JSON对象/数组,而非普通字符串。当传入的是JSON数组时,append操作会自动将数组内的每个元素依次追加到目标$.Features数组中,而非将整个数组作为单个元素插入。
内容的提问来源于stack exchange,提问作者Laba Ningombam
相关产品推荐
相关产品推荐

