Maison > Questions et réponses > le corps du texte
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_REPLACE
car 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粉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