Maison > Questions et réponses > le corps du texte
J'ai une table dans une base de données MySQL 5.7.12 avec une colonne JSON.
Les données de la colonne ont la structure suivante (le tableau json peut contenir plusieurs objets json) :
[{"ste": "I", "tpe": "PS"}, {"ste": "I", "tpe": "PB"}]
Je souhaite programmer un changement de valeur UPDATE
查询,将tpe=PB
的ste
.
C'est ma tentative :
更新用户SET ext = JSON_SET(JSON_SEARCH(ext, 'one', 'PB', NULL, '$**.tpe'), '$.tpe', 'A');
Le résultat de la requête doit être :
[{"ste": "I", "tpe": "PS"}, {"ste": "A", "tpe": "PB"}]
Cela ne fonctionne pas - la colonne est mise à jour comme suit :
"$[0].tpe"
Comment puis-je le faire fonctionner ?
Modifier
Je pense que cela a plus de sens, mais il y a toujours des problèmes de syntaxe
UPDATE user SET ext = JSON_SET(ext->JSON_SEARCH(ext, 'one', 'PS', NULL, '$**.tpe'), '$.tpe', 'A');
P粉9738995672023-11-07 10:19:24
J'espère que vous en avez encore besoin.
Essayez de mettre à jour sa valeur dans votre JSON_SET
中使用变量路径。使用JSON_SEARCH
来获取变量路径,然后用绝对路径tpe
替换为ste
. Travaille pour moi!
update user set ext= JSON_SET(ext, REPLACE(REPLACE(JSON_SEARCH(ext, 'one', 'PB'),'"',''),'tpe','ste'), 'A');