Heim  >  Fragen und Antworten  >  Hauptteil

So ersetzen Sie JSON mehrerer verschachtelter Array-Werte in einer SELECT-Anweisung

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粉587780103P粉587780103205 Tage vor397

Antworte allen(1)Ich werde antworten

  • P粉340980243

    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

    请参阅小提琴

    Antwort
    0
  • StornierenAntwort