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.
->
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
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:
Et la requête suivante utilise l'opérateur ->>
pour obtenir tous les clients sous forme de texte:
Vous pouvez voir plus de détails dans le lien ci-dessous http://www.postgresqltutorial.com/postgresql-json/