2015-10-09 18 views
8

Sto utilizzando l'ultima versione di PostgreSQL 9.4.5-1.pgdg14.04+1, e sto cercando di calcolare la lunghezza di una matrice JSONB utilizzando la funzione JSON_ARRAY_LENGTH come descritto nella PostgreSQL 9.4 DocumentationCalcolare JSONB Array Lunghezza Utilizzando PostgreSQL 9.4

Ecco l'interrogazione esatto sto tentando di eseguire:

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

Quando eseguo quella query, mi sarei aspettato da restituire un valore di 2, ma invece sto incontrando l'errore: ERROR: function json_array_length(jsonb) does not exist

Mi manca qualcosa di molto ovvio nella documentazione? In particolare si afferma che è possibile chiamare JSON_ARRAY_LENGTH passando a un tipo di dati json o jsonb. Sto espressamente lanciando su jsonb quindi sono un po 'in perdita.

Qualcun altro ha riscontrato questo problema o qualcuno avrebbe indicato cosa sto facendo male qui?

UPDATE: I Mis-Leggi La documentazione

sarei stata chiamata JSONB_ARRAY_LENGTH, non JSON_ARRAY_LENGTH. Notare la "B" dopo "JSON". Grazie ragazzi.

+1

non riesco a trovare dove "Essa afferma specificamente si può chiamare JSON_ARRAY_LENGTH passando sia un JSON o jsonb di dati di tipo" - si potrebbe citare letteralmente ?. – klin

+0

Deve essere un equivoco. [Il manuale dice] (http://www.postgresql.org/docs/current/interactive/functions-json.html): 'json_array_length (json) jsonb_array_length (jsonb)'. –

+0

come dice @klin, penso che stai leggendo male la documentazione, mostra che devi chiamare le versioni 'json_' o' jsonb_' delle funzioni a seconda del tipo di dati – Doon

risposta

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

[b] in piedi per facoltativo

+0

Per me, il nome della funzione doveva essere tappi per farlo funzionare (Windows, forse?) JSONB_ARRAY_LENGTH/JSON_ARRAY_LENGTH – Dakusan

Problemi correlati