違いは何ですか ->>
および->
SQLで?
このスレッドでは( フィールドがjson型の列postgresqlに存在するかどうかを確認する )、回答者は基本的に、
json->'attribute' is not null
の代わりに、
json->>'attribute' is not null
二重矢印ではなく単一矢印を使用する理由私の限られた経験では、両方とも同じことをします。
_->
_はjson(b)
を返し、_->>
_は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は、JSONデータのクエリに役立つ2つのネイティブ演算子->
および->>
を提供します。
演算子->
はJSONオブジェクトフィールドをJSONとして返します。演算子->>
は、JSONオブジェクトフィールドをテキストとして返します。
次のクエリは、演算子->
を使用して、すべての顧客をJSON形式で取得します。
また、次のクエリは演算子->>
を使用して、すべての顧客をテキスト形式で取得します。
以下のリンクで詳細を確認できます http://www.postgresqltutorial.com/postgresql-json/