Ich greife auf ein Array (ein json-Objekt mit dem Namen 'choice_values') in einem Feld jsonb
zu und möchte seinen Inhalt in ein durch Komma getrenntes Textfeld analysieren.Ergebnis von jsonb_array_elements als durch Komma getrennte Liste zurückgeben
SELECT
jsonb_array_elements(doc -> 'form_values' -> '8189' -> 'choice_values')
FROM
field_data.exports;
Den jsonb_array_elements Funktion einen „SETOF Text“ zurückgibt, die ich in eine kommagetrennte Liste der Array-Werte umgewandelt dürfte, in einem einzigen Feld enthält.
Vielen Dank.
Ja und ich hätte das in der Frage notieren müssen, sorry. Aus irgendeinem Grund sieht die Funktion string_agg das Ergebnis von jsonb_array_elements() als Typ "jsonb" und nicht als "setof text". Hier ist der Fehler: "ErrorMessage: Funktion String_agg (Jsonb, Text) existiert nicht" – Joebocop
Ich habe auch etwas in Ihrer Frage übersehen. Sie müssen 'jsonb_array_elements_text' ([hinzugefügt in PG 9.4] (https://www.postgresql.org/docs/9.4/static/functions-json.html)) verwenden, um 'setof text' anstelle von' jsonb' zu erhalten die Ausgabe. –
Siehe die andere Frage, die ich verlinkt habe, wenn Sie PG 9.3 aus irgendeinem Grund verwenden müssen; Es gibt einige Problemumgehungen. –