So ersetzen Sie JSON mehrerer verschachtelter Array-Werte in einer SELECT-Anweisung
P粉587780103
P粉587780103 2024-03-28 10:16:41
0
1
435

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 roleswie 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_REPLACEda die Anzahl der IDs und Rollennamen unterschiedlich sein kann, deshalb muss ich wissen, wie man das in einer einzigen SELECT-Anweisung macht.

P粉587780103
P粉587780103

Antworte allen(1)
P粉340980243

您可以使用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

请参阅小提琴

Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage