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?
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"}
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.
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?