2016-04-20 4 views
1

Mit PostgreSQL 9.3 gibt die Funktion json_array_elements jedes string-Element in einem Array als json strings zurück.postgres 9.3 json-Array von Strings zum Text

Ich möchte diese zu regulären Postgres TEXT Werte konvertieren, aber ich bin ratlos Ich versuchte value :: TEXT, aber sie sind immer noch doppelt zitiert, d. H. JSON-Strings.

Antwort

1

Ich denke du willst das.

select REPLACE(value::TEXT,'"','') from json_array_elements('["a", "b"]'); 
+0

das war, was ich hatte gehofft, zu vermeiden. Der Rückgriff auf REPLACE scheint ein Workaround zu sein, um überhaupt etwas falsch zu machen. Mein Anwendungsfall ist ein One-Shot-Schema-Migrationsskript, das ist also in Ordnung. Ich würde immer noch gerne eine "sauberere" Lösung sehen. – siltalau

+0

Ich denke, wie "ist behandeln wie ein Text, so dass Sie nicht Daten erhalten können, ohne es zu ersetzen. –

+0

Ich ging mit dieser seit der saubere und korrekte Weg wurde nur in Postgres 9.4 in Form der json_array_elements_text-Funktion hinzugefügt. – siltalau

1

So einfach wie:

select value from json_array_elements_text('["a", "b"]'); 
+0

This wäre der Weg zu gehen, wenn man postgres 9.4+ – siltalau

+0

verwendet Der Weg zu gehen wäre, dann zu aktualisieren {;-) – Patrick

Verwandte Themen