SYSTEMKRITISCH.org


Db2 und JSON

Ein kleiner Reminder, wie angenehm es ist, mit JSON umzugehen. Für mich ist ja alles neu. Und so stand ich vor dem Problem, dass ich einen JSON-String in Form eines QR-Codes bekomme und damit umgehen muss. Klassisch Kopf und Positionen.

Den JSON legen wir nach dem Scannen in einer Tabelle ab mit Identifier und ich habe folgende Lernkurven:

SELECT JSON_VALUE('JSON-String', '$.POS[0].Feld' ) AS Feldname
FROM sysibm.sysdummy1;

Anstelle von 'JSON-String' steht bei mir sowas wie (select JSONFELD from Tabelle where id = :identifier). So komme ich, in diesem Falle für die erste Position im JSON, an den Wert aus dem Positionsfeld.

Ich kann allerdings auch mit dem kompletten JSON als Tabelle umgehen und zwar so, wie man es kennt. Und Zeile für Zeile bearbeiten:

SELECT * --oder Feld/er
-- INTO :Variable/n
FROM JSON_TABLE( 'JSON-String', '$.POS[*]'                -- * = alle Positionen für das Resultset
     COLUMNS ( FELD1 VARCHAR(100) PATH '$.FELD1',
                          FELD2 VARCHAR(100) PATH '$.FELD2',
                          FELD3 VARCHAR(100) PATH '$.FELD3',
                          FELD4 VARCHAR(100) PATH '$.FELD4',
                          FELD5 VARCHAR(100) PATH '$.FELD5',
                          FELD6 VARCHAR(100) PATH '$.FELD6',
                          FELD7 VARCHAR(100) PATH '$.FELD7'
                          )
)
AS t
-- WHERE FELD1 = "x" -- AND FELD2 = "y" -- ORDER BY FELD3 etc.

Und da wird das ganze dann schon sehr bequem. Wie gesagt: nur ein kleiner Reminder für mich. Ich stand nämlich vor dem Thema "Übergabe und Verarbeitung von JSON" und wusste erstmal gar nichts. Hatte also auch keine Idee für den Umgang damit. Jetzt kann ich das mit SQL und COBOL einmal durchverarbeiten.


Kommentare (0) 💬

Neuen Kommentar schreiben