Maison  >  Questions et réponses  >  le corps du texte

Syntaxe MySQL pour mettre à jour des paires clé/valeur spécifiques dans un tableau JSON

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=PBste.

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粉386318086P粉386318086348 Il y a quelques jours785

répondre à tous(1)je répondrai

  • P粉973899567

    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');

    répondre
    0
  • Annulerrépondre