MySQL-Syntax zum Aktualisieren bestimmter Schlüssel/Wert-Paare im JSON-Array
P粉386318086
P粉386318086 2023-11-06 14:50:43
0
1
849

Ich habe eine Tabelle in einer MySQL 5.7.12-Datenbank mit einer JSON-Spalte.

Die Daten in der Spalte haben die folgende Struktur (das JSON-Array kann mehrere JSON-Objekte enthalten):

[{"ste": "I", "tpe": "PS"}, {"ste": "I", "tpe": "PB"}]

Ich möchte eine UPDATE查询,将tpe=PBsteWertänderung programmieren.

Das ist mein Versuch:

更新用户SET ext = JSON_SET(JSON_SEARCH(ext, 'one', 'PB', NULL, '$**.tpe'), '$.tpe', 'A');

Die Ausgabe der Abfrage sollte sein:

[{"ste": "I", "tpe": "PS"}, {"ste": "A", "tpe": "PB"}]

Es funktioniert nicht – es aktualisiert die Spalte auf:

"$[0].tpe"

Wie sorge ich dafür, dass es funktioniert?

Bearbeiten

Ich denke, das macht mehr Sinn, aber es gibt immer noch Probleme mit der Syntax

UPDATE user SET ext = JSON_SET(ext->JSON_SEARCH(ext, 'one', 'PS', NULL, '$**.tpe'), '$.tpe', 'A');


P粉386318086
P粉386318086

Antworte allen(1)
P粉973899567

希望你仍然需要这个。

尝试在你的JSON_SET中使用变量路径。使用JSON_SEARCH来获取变量路径,然后用绝对路径tpe替换为ste来更新其值。对我有效!

update user set ext= JSON_SET(ext, REPLACE(REPLACE(JSON_SEARCH(ext, 'one', 'PB'),'"',''),'tpe','ste'), 'A');
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage