2015-10-09 10 views
8

Używam najnowszej wersji PostgreSQL 9.4.5-1.pgdg14.04+1, a ja próbuje obliczyć długość tablicy JSONB użyciu funkcji JSON_ARRAY_LENGTH jak opisano w PostgreSQL 9.4 DocumentationOblicz JSONB Array Długość Korzystanie z PostgreSQL 9.4

Oto dokładna kwerenda ja próbuje uruchomić:

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

Kiedy uruchomić tę kwerendę, spodziewam zostać zwrócone wartość 2, lecz jestem napotyka błąd: ERROR: function json_array_length(jsonb) does not exist

Czy brakuje mi czegoś bardzo oczywistego w dokumentacji? W szczególności podano, że można zadzwonić pod numer JSON_ARRAY_LENGTH, podając typ danych: json lub. Wyraźnie rzucam to na numer jsonb, więc jestem trochę zagubiony.

Czy ktoś inny napotkał ten problem, czy ktoś mógłby wskazać, co robię źle?

UPDATE: Mis-zapoznać się z dokumentacją

I should have been nazywając JSONB_ARRAY_LENGTH nie JSON_ARRAY_LENGTH. Zwróć uwagę na "B" po "JSON". Dzięki chłopaki.

+1

nie mogę znaleźć gdzie „To wyraźnie stanowi, możesz zadzwonić JSON_ARRAY_LENGTH przejściu albo JSON lub jsonb danych typu” - można go cytować dosłownie ?. – klin

+0

To musi być nieporozumienie. [Instrukcja mówi] (http://www.postgresql.org/docs/current/interactive/functions-json.html): 'json_array_length (json) jsonb_array_length (jsonb)'. –

+0

jak @klin mówi, myślę, że źle odczytujesz dokumentację, pokazuje, że musisz wywołać funkcje 'json_' lub' jsonb_' funkcji w zależności od typu danych: – Doon

Odpowiedz

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

[b] stojący na opcjonalny

+0

Dla mnie nazwa funkcji musiała być ograniczona, aby działał (może Windows?) JSONB_ARRAY_LENGTH/JSON_ARRAY_LENGTH – Dakusan

Powiązane problemy