web-dev-qa-db-fra.com

Comment convertir PostgreSQL JSON en entier

Je peux utiliser to_json(1) pour convertir int en json, mais comment convertir json en int? Cela peut être trop lent:

to_json(1)::text::int

De plus, json est-il encapsulé à partir d'un bloc binaire (bson) ou d'un simple wrapper de texte?

31
Inshua

Ce qui fonctionne pour moi (en utilisant posgtgresql 5.6) est

SELECT (tablename.jsoncolumnname->>'jsonfiledname')::int FROM tablename;

comme

SELECT (users.data->>'failed_login_attempts_count')::int FROM users;

En supposant que la table users a une colonne json nommée data qui ressemble à ceci:

{"failed_login_attempts_count":"2","comment":"VIP"}
25
Ali

to_json (1) :: text :: int peut-être trop lent

Mais alors, c'est le seul moyen.

La deuxième partie de votre question n'est pas claire.

12
Denis de Bernardy

Le support JSON de PostgreSQL 9.3 est simplement du texte json validé.

Dans 9.4 et plus récent, vous pouvez utiliser jsonb.

"peut être trop lent" n'a pas beaucoup de sens. Qu'est-ce qui vous fait penser que c'est trop lent? Avez-vous testé et comparé? Si c'est "trop ​​lent", quelle vitesse pas serait-elle trop lente, c'est-à-dire à quoi vous attendez-vous?

6
Craig Ringer