2016-07-29 10 views
0

Ich habe eine Tabelle in PostgreSQL mit Feld wie ID, Name, Stadt, Mob usw. Ich habe, dass in PostgreSQL gibt es JSON Datentyp in dem wir die Daten im JSON-Format speichern können, aber ich will nicht Verwenden Sie den json-Datentyp.Gibt es eine Möglichkeit, Daten im JSON-Format aus der PostgreSQL-Tabelle abzurufen, die ein anderes Feld als das JSON-Datentypfeld hat?

Ich mag dieses Tabellenfeld (id, Name, Stadt, mob), die nicht json Datentyp-Feld, das mag ich im JSON-Format

Ich mag annehmen, dass das Mytable eine Tabelle, die id normale Felder holen hat, ist , Name, Stadt, Mob, dob als Feld und
jetzt möchte ich Abfrage auszuführen wie:

select name,city from mytable where id=5; 

Diese Abfrage zurückgeben Ausgabe wie {"name":"xyz","city":"abc"}

so sollten, wie ich das tun kann und was das sein sollte Abfrage dafür?

+0

'row_to_json() '? https://www.postgresql.org/docs/current/static/functions-json.html –

+0

aber was ist, wenn ich einige Spalten aus einer Reihe möchte? –

+0

Sorry ich habe keine Ahnung was du meinst. 'row_to_json()' verwendet die Spalten aus der Zeile. Wenn Sie eine gute Antwort wünschen, dann bearbeiten Sie Ihre Frage und fügen Sie einige Beispieldaten und die erwartete Ausgabe basierend auf diesen Daten hinzu. _Formatted_ Text bitte, [keine Screenshots] (http://meta.stackoverflow.com/questions/285551/why-may-i-not-upload-images-of-code-on-so-when-asking-a- Frage/285557 # 285557) –

Antwort

0

Verwendung row_to_json():

select row_to_json(t) 
from (
    select name,city from mytable 
    where id=5 
) t 

Die abgeleitete Tabelle ist notwendig, einen Datensatztyp mit Eigennamen für die Spalten zu erstellen. row_to_json((name,city)) würde dies nicht erreichen.

bearbeiten:

Wenn Sie alle Spalten aus der Tabelle (nicht nur zwei, wie in der Frage) wollen, dann brauchen Sie nicht die abgeleitete Tabelle:

select row_to_json(mytable) 
from mytable 
where id = 5; 
+0

was ist, wenn ich * von mytable auswählen möchte? –

+0

Verwenden Sie dann 'select row_to_json (mytable) from mytable'. –

+0

diese * Abfrage funktioniert, aber wählen row_to_json (t) aus ( select Name, Stadt von mytable wo id = 5 ) t nicht funktioniert –

Verwandte Themen