Was ich habe, ist eine Textspalte in Postgresql, die ich in JSONB-Spalte konvertieren möchte.So konvertieren Sie Text für eine Postgresql-Spalte vollständig in Jsonb
Was ich habe versucht, ist dies:
CREATE TABLE test (id serial, sec text, name text);
INSERT INTO test (id, sec, name) VALUES (1,'{"gender":"male","sections":{"a":1,"b":2}}','subject');
ALTER TABLE test ALTER COLUMN sec TYPE JSONB USING sec::JSONB;
Dies tat die Textspalte zu jsonb
konvertieren.
Allerdings, wenn ich die Abfrage versuchen:
SELECT sec->>'sections'->>'a' FROM test
Ich erhalte eine Fehlermeldung.
Ich sehe die Umwandlung erfolgt nur auf einer Ebene (d. H .: sec - >> 'Abschnitte' funktioniert gut).
Die Abfrage SELECT pg_typeof(name->>'sections') from test;
gibt mir Spaltentyp als Text.
Gibt es eine Möglichkeit, den Text vollständig in Jsonb konvertieren, so dass ich SELECT sec->>'sections'->>'a' FROM test;
erfolgreich abfragen kann?
Ich möchte nicht den Text in JSON in der Abfrage wie unten konvertieren, wie ich Index für 'a' später erstellen muss.
select (sec->>'sections')::json->>'a' from test;