2017-02-06 5 views
0

Ich habe eine Postgresql-Datenbank, in der ich eine Spalte habe, die ein jsonb Objekt enthält.Schlüssel/Wert-Paar aus der PostGreSQL jsonb-Spalte extrahieren?

Ich bin über eine Situation gekommen, wo ich ein einzelnes Schlüssel-Wert-Paar aus meinem Json-Objekt extrahieren muss. Ich habe derzeit keine Ahnung und konnte keine Beispiele dafür finden, wie das gemacht wird.

Ich habe die folgende Tabelle:

---------------------------------------------- 
| id | did | timestamp | data | db_timestamp | 
---------------------------------------------- 

Die Datenspalte ist mein JSON-Objekt und ein Beispiele dafür, was es enthält, ist:

{"n": 336372148490, "ac": 22.0, "al": 119.0, "be": 346.3, "la": 55.69707492, "lo": 12.58713834, "sa": 5, "sp": 2.6100767, "provider": "gps"} 

Also, was ich tun möchte, zu schreiben, ist ein Abfrage, in der ich nach einem einzelnen Schlüssel-Wert-Paar suche. Ich habe derzeit die folgende Abfrage,

SELECT data WHERE did = '357139052424715' and timestamp < 1466642640000 

Ich möchte ein einzelnes Schlüssel-Wert-Paar extrahieren. Wie ändere ich die obige Abfrage, um nur "la": 55.69707492 zu extrahieren?

Antwort

1

Sie können dies tun, wie:

SELECT data->>'la' WHERE did = '357139052424715' and timestamp < 1466642640000 

Weitere Beispiele finden Sie unter:

http://clarkdave.net/2013/06/what-can-you-do-with-postgresql-and-json/

+0

Kann ich Vergleiche zu tun als auch mit diesen Daten? Wie SELECT Daten - >> 'la' WHERE did = '357139052424715' und Zeitstempel <1466642640000 und Daten - >> 'la' = '? – Zeliax

+0

Ja, das ist, wie Sie filtern würden –

+0

Danke. Genau das habe ich gebraucht! – Zeliax

Verwandte Themen