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

Comment remplacer le JSON de plusieurs valeurs de tableau imbriquées dans une seule instruction SELECT

J'ai un champ de table nommé values dont la valeur JSON actuelle est la suivante :

{"角色": ["1","2","3","4"]}

J'ai une autre table nommée roles comme ci-dessous

id Nom du personnage
1 Administrateur
2 Finances
3 Fiche de paie
4 Comptable

J'ai essayé d'utiliser la fonction JSON_REPLACE pour remplacer le numéro d'identification dans la chaîne JSON_REPLACE 函数将 values JSON par le nom du rôle.

En gros, cela devrait avoir ce résultat

{"角色": ["管理员","财务","工资","账户"]}

Mais je ne peux pas le faire comme JSON_REPLACE('["1","2","3","4"]', '$[0]', Admin, '$[1]', Finance) 一样使用 JSON_REPLACEcar le nombre d'identifiants et de noms de rôle peut être différent, c'est pourquoi j'ai besoin de savoir comment faire cela dans une seule instruction SELECT.

P粉587780103P粉587780103205 Il y a quelques jours389

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

  • P粉340980243

    P粉3409802432024-03-29 09:20:42

    Vous pouvez utiliser json_table :

    select json_object('role', (select json_arrayagg(r1.role_name) 
      from json_table(t.value, '$.roles[*]' columns(role int path '$')) r 
      join roles r1 on r.role = r1.id)) 
    from vals t

    Voir violon .

    répondre
    0
  • Annulerrépondre