簡體   English   中英

如何以准備好的語句更新mysql 5.7中json列中的鍵的動態數目

[英]How to update dynamic number of keys in json column in mysql 5.7 as prepared statement

我已經在MySQL 5.7中創建了一個如下表。

id   :int
data :json

現在,數據具有多個鍵作為json。

data = {"a":"b","c":"d"};

現在,我需要用新數據更新現有數據,以更新其中的多個(動態)鍵。

如何實現這一目標。

您可以通過以字符串形式設置更新的對象來簡單地運行UPDATE查詢。

例如:考慮您正在構建JS應用程序。

updatedData = JSON.Stringify(updatedData)

query> update t set data = updatedData;

這是一個演示。 首先,我使用JSON數據創建一個像您一樣的表。

mysql [localhost] {msandbox} (test) > create table t (id int primary key, data json);
Query OK, 0 rows affected (0.02 sec)

mysql [localhost] {msandbox} (test) > insert into t values (1, json_object('a', 'b', 'c', 'd'));
Query OK, 1 row affected (0.01 sec)

mysql [localhost] {msandbox} (test) > select * from t;
+----+----------------------+
| id | data                 |
+----+----------------------+
|  1 | {"a": "b", "c": "d"} |
+----+----------------------+
1 row in set (0.00 sec)

現在,我使用新值更新JSON數據。

mysql [localhost] {msandbox} (test) > update t set data = json_merge_patch(data, json_object('a', 123, 'c', 'foo'));
Query OK, 1 row affected (0.01 sec)
Rows matched: 1  Changed: 1  Warnings: 0

mysql [localhost] {msandbox} (test) > select * from t;
+----+------------------------+
| id | data                   |
+----+------------------------+
|  1 | {"a": 123, "c": "foo"} |
+----+------------------------+

對於准備好的語句,在創建將更新數據的JSON對象時,應使用參數占位符。

update t set data = json_merge_patch(data, json_object(?, ?, ?, ?));

我不確定動態鍵的含義。 您將必須成對使用參數占位符(1個鍵,1個值),並且在准備查詢時需要固定參數數量。 由您決定編寫應用程序代碼以使用所需數量的參數占位符來構建查詢。

您應該在這里閱讀有關JSON_JSON_MERGE_PATCH()之類的JSON函數的信息: https ://dev.mysql.com/doc/refman/5.7/en/json-modification-functions.html

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM