2015-10-09 340 views
8

我運行的是最新版本的PostgreSQL 9.4.5-1.pgdg14.04+1,並在嘗試作爲PostgreSQL 9.4 Documentation計算JSONB數組的長度使用PostgreSQL 9.4

這裏描述的計算使用JSON_ARRAY_LENGTH功能JSONB數組的長度是準確的查詢我試圖運行:

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

當我運行該查詢,我希望要返回的2的值,而是我遇到的錯誤:ERROR: function json_array_length(jsonb) does not exist

我在文檔中遺漏了一些非常明顯的東西嗎?它特別聲明你可以撥打JSON_ARRAY_LENGTH通過jsonjsonb數據類型。我明確地轉向jsonb,所以我有點不知所措。

有沒有其他人遇到過這個問題,或者有人指出我在做什麼錯在這裏?

更新:我誤讀的文檔

我一直在呼籲JSONB_ARRAY_LENGTH,不JSON_ARRAY_LENGTH。注意「JSON」之後的「B」。多謝你們。

+1

我找不到在哪裏「它明確規定,您可致電JSON_ARRAY_LENGTH傳球無論是JSON或jsonb數據類型」 - 你可以舉它的字面? – klin

+0

必須是一個誤解。 [手冊說](http://www.postgresql.org/docs/current/interactive/functions-json.html):'json_array_length(json)jsonb_array_length(jsonb)'。 –

+0

@klin說,我認爲你誤解了文檔,它表明你需要調用函數的'json_'或'jsonb_'版本,這取決於數據類型 – Doon

回答

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

[B]站立可選

+0

對我來說,函數名稱必須是大寫字母才能起作用(windows,也許?)JSONB_ARRAY_LENGTH/JSON_ARRAY_LENGTH – Dakusan