Heim > Fragen und Antworten > Hauptteil
Ich habe ein Tabellenfeld mit dem Namen values
, dessen aktueller JSON-Wert wie folgt lautet:
{"角色": ["1","2","3","4"]}
Ich habe einen anderen Tisch mit dem Namen roles
wie unten
id | Charaktername |
---|---|
1 | Administrator |
2 | Finanzen |
3 | Gehaltsabrechnung |
4 | Buchhalter |
Ich habe versucht, mit der Funktion JSON_REPLACE
die ID-Nummer im JSON_REPLACE
函数将 values
JSON-String durch den Rollennamen zu ersetzen.
Grundsätzlich sollte es dieses Ergebnis haben
{"角色": ["管理员","财务","工资","账户"]}
Aber ich kann es nicht so machen, JSON_REPLACE('["1","2","3","4"]', '$[0]', Admin, '$[1]', Finance)
一样使用 JSON_REPLACE
da die Anzahl der IDs und Rollennamen unterschiedlich sein kann, deshalb muss ich wissen, wie man das in einer einzigen SELECT-Anweisung macht.
P粉3409802432024-03-29 09:20:42
您可以使用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