2016-04-26 7 views
0

ich eine JSON-Spalte (genannt pracInfo) in einer Postgres-DB, die Daten in folgendem Format enthält:Abfragen Postgres SQL JSON Tabelle

[{"ApplicationId":["123455667"],"Domain":["WORKGROUP"],"PracName":["ABC Corp cc"],"Phone":["011 123 4567"],"EMail":["[email protected]"],"SQLversion":["Microsoft SQL Server 2005 - 9.00.4035.00 (Intel X86) \n\tNov 24 2008 13:01:59 \n\tCopyright (c) 1988-2005 Microsoft Corporation\n\tExpress Edition on Windows NT 6.1 (Build 7601: Service Pack 1)\n"],"ABCversion":["0000"],"ABCDBversion":["2.604"],"ABCDDBversion":["1.0.3"]}] 

Ich möchte eine Abfrage ziehen, die die JSON Eigenschaften teilt aus z.B ApplicationId, Domain, PracName usw. als verschiedene Spalten. Wenn die Spalte zwei Objekte innerhalb des Arrays hat, möchte ich, dass sie auf zwei Zeilen aufgeteilt wird.

Ich habe verschiedene Abfrageformate ausprobiert, aber die Ergebnisse bleiben leer, z. B. json_populate_recordset, z.

CREATE type json_type AS (PracName varchar(100),Email Varchar(100)); 

SELECT id, (json_populate_recordset(null::json_type, "pracInfo")).* FROM public."PracInfos"; 

Was mache ich falsch?

Antwort

1

Sie müssen die Typnamen mit doppelten Anführungszeichen versehen, um die Groß-/Kleinschreibung zu berücksichtigen. Ich entfernte auch die Längenbeschränkung that doesn't need to be set in PostgreSQL:

CREATE type json_type AS ("PracName" varchar, "Email" varchar); 
+0

Vielen Dank! Finde den SQL Server-Entwickler, der in postgreSQL spielt :) – Madeleine