Как преобразовать postgres json в integer
Я могу использовать to_json(1)
для преобразования int в json, но как преобразовать json в int? Это может быть слишком медленно:
to_json(1)::text::int
Кроме того, json завернут из двоичного блока (bson) или простой оберткой текста?
Ответы
Ответ 1
Что работает для меня (используя posgtgresql 5.6),
SELECT (tablename.jsoncolumnname->>'jsonfiledname')::int FROM tablename;
как
SELECT (users.data->>'failed_login_attempts_count')::int FROM users;
Предполагая, что таблица users
имеет столбец json с именем data
, который выглядит примерно так:
{"failed_login_attempts_count":"2","comment":"VIP"}
Ответ 2
to_json (1):: text:: int возможно слишком медленно
Но тогда это единственный способ.
Вторая часть вашего вопроса неясна.
Ответ 3
Поддержка PostgreSQL 9.3 JSON - это просто проверенный текст json.
В 9.4 и новее вы можете использовать jsonb.
"может быть слишком медленным" не делает тонны смысла. Что заставляет вас думать слишком медленно? Вы тестировали и оценивали? Если он "слишком медленный", какая скорость не будет слишком медленной, то есть что вы ожидаете?