Comment remplacer le JSON de plusieurs valeurs de tableau imbriquées dans une seule instruction SELECT
P粉587780103
P粉587780103 2024-03-28 10:16:41
0
1
437

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粉587780103
P粉587780103

répondre à tous(1)
P粉340980243

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 .

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal