web-dev-qa-db-fra.com

Quelle est la différence entre `- >>` et `->` dans Postgresql?

Quelle est la différence entre ->> et -> en SQL?

Dans ce fil ( Vérifier si le champ existe dans la colonne de type json postgresql ), le répondeur recommande essentiellement d'utiliser,

json->'attribute' is not null

au lieu de,

json->>'attribute' is not null

Pourquoi utiliser une seule flèche au lieu d'une double flèche? Dans mon expérience limitée, les deux font la même chose.

36
tim_xyz

-> Renvoie json(b) et ->> Renvoie text:

with t (jo, ja) as (values
    ('{"a":"b"}'::jsonb,('[1,2]')::jsonb)
)
select
    pg_typeof(jo -> 'a'), pg_typeof(jo ->> 'a'),
    pg_typeof(ja -> 1), pg_typeof(ja ->> 1)
from t
;
 pg_typeof | pg_typeof | pg_typeof | pg_typeof 
-----------+-----------+-----------+-----------
 jsonb     | text      | jsonb     | text
27
Clodoaldo Neto

PostgreSQL fournit deux opérateurs natifs -> et ->> pour vous aider à interroger les données JSON.

L'opérateur -> renvoie le champ d'objet JSON au format JSON. L'opérateur ->> renvoie le champ d'objet JSON sous forme de texte.

La requête suivante utilise l'opérateur -> pour obtenir tous les clients sous forme de JSON:

enter image description here

Et la requête suivante utilise l'opérateur ->> pour obtenir tous les clients sous forme de texte:

enter image description here

Vous pouvez voir plus de détails dans le lien ci-dessous http://www.postgresqltutorial.com/postgresql-json/

13
Eddy Bayonne