2017-12-14 2 views
0

Ich habe eine JSON-Spalte in einer Tabelle in Postgres, die eine Reihe von Objekten enthält, z.Postgres JSON Array-Elemente und Null zurück

{"BlockData":[{"Name":"George","Age":"54","Height":"1.75"}, {"Name":"Mario","Age":"35","Height":"1.90"}]} 

Ich verwende eine Auswahlabfrage und wollen den Namen Objekt zuzugreifen und das Wertepaar des Namens (George und Mario). Was ich versuche, ist folgendes zu:

select jsonb_array_elements(jsondoc_->'BlockData')->>'Name' from BlockData; 

Was ich im Gegenzug ist

"ERROR: cannot extract elements from a scalar 

SQL state: 22023" 

Von dem, was ich entdecken konnte, ist, dass dieses Problem, weil bei einigen Zeilen erfolgt die Rückkehr ist Null. Können Sie mir bitte mitteilen, wie ich dieses Problem überschneiden kann?

Antwort

0

haben Sie versucht, sie zu filtern?

t=# with t(jsondoc_) as (values('{"BlockData":[{"Name":"George","Age":"54","Height":"1.75"}, {"Name":"Mario","Age":"35","Height":"1.90"}]}'::jsonb),('{"BlockData":null}')) 
select jsonb_array_elements(jsondoc_->'BlockData')->>'Name' from t 
where jsondoc_->'BlockData' <> 'null'; 
?column? 
---------- 
George 
Mario 
(2 rows) 
+1

Hallo Vao nein, ich habe es nicht versucht. Ich tat es jetzt und es funktioniert gut, danke. – charilaos13