2015-10-09 3 views
8

Я бегу последнюю версию PostgreSQL 9.4.5-1.pgdg14.04+1 и пытаю вычислить длину массива JSONB, используя функцию JSON_ARRAY_LENGTH, как описано в PostgreSQL 9.4 DocumentationВычислить JSONB Массив Длина Использование PostgreSQL 9.4

Вот точный запрос Я пытаюсь запустить:

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

Когда я запускаю этот запрос, я бы ожидать, чтобы быть возвращено значение 2, но вместо этого я встретив ошибку: ERROR: function json_array_length(jsonb) does not exist

Я пропустил что-то очень очевидное в документации? В нем конкретно указано, что вы можете позвонить JSON_ARRAY_LENGTH, передавая либо тип данных json, либо jsonb. Я явно бросаю jsonb, поэтому я немного потерял.

Неужели кто-нибудь еще столкнулся с этой проблемой, или кто-нибудь еще указал бы, что я здесь делаю неправильно?

UPDATE: I Mis-Прочитать документацию

Я должен был вызовом JSONB_ARRAY_LENGTH, не JSON_ARRAY_LENGTH. Обратите внимание на «B» после «JSON». Спасибо, парни.

+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 

[б] стоячие для дополнительного

+0

Для меня имя функции должно было быть закрытием для работы (окна, возможно?) JSONB_ARRAY_LENGTH/JSON_ARRAY_LENGTH – Dakusan

Смежные вопросы