gpt4 book ai didi

json - 如何通过在 sqlite 表中引用自身来更新 json 对象值?

转载 作者:行者123 更新时间:2023-12-04 07:39:00 25 4
gpt4 key购买 nike

假设我有一个表 features,其中有一列 data,其中包含 json 对象。

CREATE TABLE features ( id INTEGER PRIMARY KEY, data json )

现在,一个示例数据对象可能是:

{"A":
{"B":
{"coordinates":[
{"x":1, "y":1},
{"x":10, "y":10}
]
}
}

现在我需要遍历此 data 列中的所有数据并将 coordinates 的值加倍。

我尝试将它设置为它自己的值除以 0.5,但这似乎适用于第一行,然后将所有其他行设置为完全相同的值。

update features
set data =
(select json_set(features.data, "$.A.B.coordinates[0].x", (select json_extract(features.data, "$.A.B.coordinates[0].x")/0.5 from features))
from features);

如何在 json_set 中引用它自己的值并为每一行重复?遍历每一行并将坐标加倍的最佳方法是什么?

最佳答案

不需要 SELECT 语句。
可以直接引用同一行data列的值:

UPDATE features
SET data = json_set(
features.data,
"$.A.B.coordinates[0].x", json_extract(features.data, "$.A.B.coordinates[0].x") * 2
);

或者,如果您想更新所有 xy:

UPDATE features
SET data = json_set(
features.data,
"$.A.B.coordinates[0].x", json_extract(features.data, "$.A.B.coordinates[0].x") * 2,
"$.A.B.coordinates[0].y", json_extract(features.data, "$.A.B.coordinates[0].y") * 2,
"$.A.B.coordinates[1].x", json_extract(features.data, "$.A.B.coordinates[1].x") * 2,
"$.A.B.coordinates[1].y", json_extract(features.data, "$.A.B.coordinates[1].y") * 2
);

参见 demo .

关于json - 如何通过在 sqlite 表中引用自身来更新 json 对象值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67587975/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com