2015-10-09 13 views
8

ich die neueste Version von PostgreSQL läuft 9.4.5-1.pgdg14.04+1 und bin versucht, die Länge eines JSONB Array zu berechnen, wie in dem hier PostgreSQL 9.4 Documentationberechnen JSONB Array Länge Mit PostgreSQL 9.4

mit der JSON_ARRAY_LENGTH Funktion beschrieben ist die genaue Abfrage ich bin versucht zu laufen:

SELECT JSON_ARRAY_LENGTH('["hi","ho"]'::jsonb) AS length 

Wenn ich diese Abfrage ausführen, würde ich erwarten, einen Wert von 2, sondern bin Begegnung mit dem Fehler zurückgegeben werden: ERROR: function json_array_length(jsonb) does not exist

Fehle ich etwas sehr offensichtlich in der Dokumentation? Es heißt konkret, Sie können JSON_ARRAY_LENGTH entweder einen json oder jsonb Datentyp aufrufen. Ich werfe explizit auf jsonb, also bin ich etwas verloren.

Hat jemand anderes dieses Problem oder würde jemand darauf hinweisen, was ich hier falsch mache?

UPDATE: Ich Mis-Lesen Sie die Dokumentation

ich JSONB_ARRAY_LENGTH genannt haben sollte, nicht JSON_ARRAY_LENGTH. Beachten Sie das "B" nach "JSON". Danke Leute.

+1

kann ich nicht, wo „es speziell Sie JSON_ARRAY_LENGTH vorbei entweder eine json oder jsonb Datentyp kann Rufzustände“ finden - könnte man es wörtlich zitieren ?. – klin

+0

Muss ein Missverständnis sein. [Das Handbuch sagt] (http://www.postgresql.org/docs/current/interactive/functions-json.html): 'json_array_length (json) jsonb_array_length (jsonb)'. –

+0

wie @klin sagt, ich denke, dass Sie die Dokumentation falsch lesen, es zeigt, dass Sie entweder 'json_' oder' jsonb_' Versionen der Funktionen je nach Datentyp aufrufen müssen – Doon

Antwort

15
SELECT json[b]_array_length('["question","solved"]') AS length 

[b] Stehen für optionale

+0

Für mich musste der Name der Funktion Caps sein, damit es funktioniert (Windows, vielleicht?) JSONB_ARRAY_LENGTH/JSON_ARRAY_LENGTH – Dakusan

Verwandte Themen