web-dev-qa-db-ja.com

Postgresqlの `->>`と `->`の違いは何ですか?

違いは何ですか ->>および-> SQLで?

このスレッドでは( フィールドがjson型の列postgresqlに存在するかどうかを確認する )、回答者は基本的に、

json->'attribute' is not null

の代わりに、

json->>'attribute' is not null

二重矢印ではなく単一矢印を使用する理由私の限られた経験では、両方とも同じことをします。

36
tim_xyz

_->_は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
_
27
Clodoaldo Neto

PostgreSQLは、JSONデータのクエリに役立つ2つのネイティブ演算子->および->>を提供します。

演算子->はJSONオブジェクトフィールドをJSONとして返します。演算子->>は、JSONオブジェクトフィールドをテキストとして返します。

次のクエリは、演算子->を使用して、すべての顧客をJSON形式で取得します。

enter image description here

また、次のクエリは演算子->>を使用して、すべての顧客をテキスト形式で取得します。

enter image description here

以下のリンクで詳細を確認できます http://www.postgresqltutorial.com/postgresql-json/

13
Eddy Bayonne