我正在尝试使用将数组添加到另一个数组JSON_MODIFY。
情况是,我在数据库中存储了数组类型的json数据。看起来像这样:
declare @base nvarchar(max) = '[{"name":"base"}]';
Run Code Online (Sandbox Code Playgroud)
我得到的另一组数据也是数组形式的:
declare @test1 nvarchar(max) = '[{"name":"test1"},{"name":"example1"}]';
Run Code Online (Sandbox Code Playgroud)
我正在尝试使用JSON_MODIFY和JSON_QUERY魔术将它们附加在一起,但这给了我意外的结果。
declare @base nvarchar(max) = '[{"name":"base"}]';
declare @test1 nvarchar(max) = '[{"name":"test1"},{"name":"example1"}]';
set @base = JSON_MODIFY(@base,'append $',JSON_QUERY(@test1));
select @base;
Run Code Online (Sandbox Code Playgroud)
输出:
[{"name":"base"}, [{"name":"test1"},{"name":"example1"}]]
Run Code Online (Sandbox Code Playgroud)
但是我想要的是使用这些方法使其像以下那样工作Add-Range:
[{"name":"base"},{"name":"test1"},{"name":"example1"}]
Run Code Online (Sandbox Code Playgroud)
我对这个过程有些迷惑,我不知道在哪里可以找到这种功能。
我将在C#服务中使用它来直接通过代码进行修改。这就是为什么我不能同时使用Store过程和函数的原因。
编辑#1:
关于@Salman A的答复,我非常感谢您的回答,但正如我之前所说,事情很难在通过代码运行的查询中使用。这是:
declare @test1 nvarchar(max) = '[{"name":"test1"},{"name":"example1"}]';
UPDATE dbo.ExampleTable
SET [Data] = JSON_MODIFY([Data], 'append $', JSON_QUERY(@test1))
WHERE [UniqueId] = 'some_guid_here'
Run Code Online (Sandbox Code Playgroud)
我已经尝试过适应我喜欢的答案:
declare @test1 nvarchar(max) = '[{"name":"test1"},{"name":"example1"}]';
UPDATE dbo.ExampleTable
SET [Data] = (
select …Run Code Online (Sandbox Code Playgroud)