- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个存储过程,它接受一个 JSON 字符串作为输入参数。输入的 JSON 字符串是这样的:
[
{
"name":"Jhon",
"surname":"Smith",
"skills":["C#","VB.NET"]
},
{
"name":"Robert",
"surname":"Jhonson",
"skills":["T-SQL","Pascal"]
}
]
如何自动为每个主体对象添加唯一的 GUID
属性?
最佳答案
查看您已经发现的示例数据this page介绍如何使用 json_modify()
函数插入值的文档。该页面上的示例是为单个“主要对象”编写的。
如果我对此的解释正确,那么您的示例有 2 个主要对象。使用another page文档的一部分显示了如何使用 openjson()
函数将该示例分成几行。然后,您可以在每一行的第一个文档页面中应用 json_modify()
。
declare @var nvarchar(max) =
'[
{
"name":"Jhon",
"surname":"Smith",
"skills":["C#","VB.NET"]
},
{
"name":"Robert",
"surname":"Jhonson",
"skills":["T-SQL","Pascal"]
}
]';
select row_number() over(order by (select null)) as ObjNumber,
json_modify(j.value, '$.guid', convert(nvarchar(100), newid())) as ObjValue
from openjson(@var, '$') j
结果是这样的:
ObjNumber ObjValue
----------- ----------------------------------------------------
1 {
"name":"Jhon",
"surname":"Smith",
"skills":["C#","VB.NET"]
,"guid":"154C5581-588C-41AA-B292-BB6459F8F4DC"}
2 {
"name":"Robert",
"surname":"Jhonson",
"skills":["T-SQL","Pascal"]
,"guid":"46ACFDD6-58DE-4DB0-8D7A-9B1CCABFF8D8"}
要将行重新组合在一起,只需添加 for json path
。然而,这确实需要在输出中结束的字段别名(此处为 MyObjects
)。
select json_modify(j.value, '$.guid', convert(nvarchar(100), newid())) as MyObjects
from openjson(@var, '$') j
for json path;
输出:
[{"MyObjects":{
"name":"Jhon",
"surname":"Smith",
"skills":["C#","VB.NET"]
,"guid":"FCED4D30-B2B0-460B-97FA-EDA820039572"}},{"MyObjects":{
"name":"Robert",
"surname":"Jhonson",
"skills":["T-SQL","Pascal"]
,"guid":"9FF02A70-0455-4E5C-8C11-27BB2688929D"}}]
要更新变量,请使用以下代码。奖励:replace()
删除了之前添加的字段别名。
set @var = replace(
( select json_modify(j.value, '$.guid', convert(nvarchar(100), newid())) as MyObjects
from openjson(@var, '$') j
for json path ),
'"MyObjects":', '');
select @var
的最终输出:
[{{
"name":"Jhon",
"surname":"Smith",
"skills":["C#","VB.NET"]
,"guid":"66CB37D3-FAEF-4186-94D8-8AC0CF6EB1AC"}},{{
"name":"Robert",
"surname":"Jhonson",
"skills":["T-SQL","Pascal"]
,"guid":"564D6904-D981-40AC-BA9C-8B06015ACE50"}}]
关于sql-server - T-SQL Json_modify 将属性附加到每个对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63753186/
我的结构看起来像这样 Declare @layout NVARCHAR(MAX) = N' { "Sections": [ {
如何从 VARCHAR(MAX) JSON 数组中删除对象? 设置 DECLARE @Json VARCHAR(MAX) = JSON_QUERY('[{"u":"user1","i":"item1"
我有一个包含 json 列的表,该 json 包含一个项目数组。我想更新其中一些满足给定条件的项目。所以数组的路径是 $.activities 并且 type 是 'multichoicei want
问题在于将新的 JSON 数组附加到现有的 JSON 数组中: 假设我有以下 JSON 数组[{"id": 1, "data": "One"}, {"id": 2, "data": "Two"}] 我
SQL Server 中 JSON_MODIFY 的使用 Intro SQL Server 从 2016 开始支持了一些 JSON操作,最近的项目里也是好多地方字段直接存成了 JSON,需要了解
我有一个存储过程,它接受一个 JSON 字符串作为输入参数。输入的 JSON 字符串是这样的: [ { "name":"Jhon", "surname":"Sm
T-Sql JSON_MODIFY 函数在附加新值对时添加包装器时存在一些问题,如 declare @jsonstring varchar(max) ='{"Width":"100%","Leng
我正在尝试使用 Json_Modify 更新所有列的值: DECLARE @JSON NVARCHAR(MAX) SET @JSON = N'{ "A":1, "TMP": [ {"A"
我使用 JSON_MODIFY 取得了一些成功追加 fieldErrors: []和它的内容到另一个对象的根 { data: []}这样生成的对象看起来像这样:{data: [], fieldErro
我是一名优秀的程序员,十分优秀!