Я бегу последнюю версию 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». Спасибо, парни.
Я не могу найти, где «Он определенно заявляет, вы можете вызвать JSON_ARRAY_LENGTH прохождение либо JSON или jsonb типа данных» - могли бы вы привести его в буквальном смысле ?. – klin
Должно быть недоразумение. [Руководство написано] (http://www.postgresql.org/docs/current/interactive/functions-json.html): 'json_array_length (json) jsonb_array_length (jsonb)'. –
как @klin говорит, я думаю, что вы неправильно читаете документацию, он показывает, что вам нужно вызвать либо 'json_', либо' jsonb_' версии функций в зависимости от типа данных – Doon