Rumah > Soal Jawab > teks badan
Saya mempunyai jadual dalam pangkalan data MySQL 5.7.12 dengan lajur JSON.
Data dalam lajur mempunyai struktur berikut (tatasusunan json mungkin mengandungi berbilang objek json):
[{"ste": "I", "tpe": "PS"}, {"ste": "I", "tpe": "PB"}]
Saya ingin memprogramkan UPDATE
查询,将tpe=PB
的ste
perubahan nilai.
Ini adalah percubaan saya:
更新用户SET ext = JSON_SET(JSON_SEARCH(ext, 'one', 'PB', NULL, '$**.tpe'), '$.tpe', 'A');
Keluaran pertanyaan hendaklah:
[{"ste": "I", "tpe": "PS"}, {"ste": "A", "tpe": "PB"}]
Ia tidak berfungsi - ia mengemas kini lajur kepada:
"$[0].tpe"
Bagaimana cara saya membuatnya berfungsi?
Edit
Saya rasa ini lebih masuk akal, tetapi masih mempunyai masalah dengan sintaks
UPDATE user SET ext = JSON_SET(ext->JSON_SEARCH(ext, 'one', 'PS', NULL, '$**.tpe'), '$.tpe', 'A');
P粉9738995672023-11-07 10:19:24
Semoga anda masih memerlukan ini.
Cuba kemas kini nilainya dalam JSON_SET
中使用变量路径。使用JSON_SEARCH
来获取变量路径,然后用绝对路径tpe
替换为ste
anda. Bekerja untuk saya!
update user set ext= JSON_SET(ext, REPLACE(REPLACE(JSON_SEARCH(ext, 'one', 'PB'),'"',''),'tpe','ste'), 'A');