为什么这样:
with j(jval) AS
(
select JSON_SERIALIZE('{"contract" :{"contract-type" : "P",
"contract-id" : 123451,
"proposal-no" : "123456",
"serial-no" : "serialasd922",
"product-code" : "s093",
"contract-sign-dt" : "2016-12-01T00:00:00",
"contract-start-dt" : "2016-12-09T00:00:00"
}
}' pretty) from dual
)
SELECT json_transform(jval, insert '$.contract[*].x' = '50' pretty)
FROM j
不工作?我正在尝试在 $.contract 下插入新值。 设置丢失插入也不起作用,但是当涉及到更新现有字段时 - 一切都很好。
您正在尝试插入
'$.contract[*].x'
,但 contract
是一个对象而不是数组,因此 [*]
不应该在那里。
请使用
insert '$.contract.x' = 50
来代替。
with j(jval) AS
(
select JSON_SERIALIZE('{"contract" :{"contract-type" : "P",
"contract-id" : 123451,
"proposal-no" : "123456",
"serial-no" : "serialasd922",
"product-code" : "s093",
"contract-sign-dt" : "2016-12-01T00:00:00",
"contract-start-dt" : "2016-12-09T00:00:00"
}
}' pretty) from dual
)
SELECT json_transform(jval, insert '$.contract.x' = '50' pretty)
FROM j
JSON_TRANSFORM(JVAL,INSERT'$.CONTRACT.X'='50'PRETTY) |
---|
{ “合同”: { “合同类型”:“P”, “合同ID”:123451, “提案编号”:“123456”, “序列号”:“serialasd922” , "产品代码":"s093", "合同签署-dt":"2016-12-01T00:00:00", "合同开始-dt":"2016-12-09T00:00 :00", "x":"50" } } |