2016-08-04 1 views
12

->>->の違いは何ですか?このスレッド(Check if field exists in json type column postgresql)、回答は基本的に使用することをお勧めしますで Postgres SQLの ` - ` `と` - > `の違いは何ですか?

、代わりの

json->'attribute' is not null 

json->>'attribute' is not null 

なぜ二重矢印の代わりに、単一の矢印を使用して?私の限られた経験では、どちらも同じことをしています。

+4

[ファインマニュアルを読むことの忘れられた美徳への歓迎](https://www.postgresql.org/docs/current/static/functions-json.html) –

答えて

8

->戻り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 
+0

おそらく、最初の演算子が 'jsonb'を返すことを意味します(そして 'json(b)'ではなく)。 –

+2

@AlexanderFarber私はjsonとjsonbの両方を返すことができるので、かっこは –

2

PostgreSQLはあなたがJSONデータを照会するために役立つ2人のネイティブオペレーター->->>を提供します。

オペレータ->はJSONオブジェクトフィールドをJSONとして返します。 オペレータ->>はJSONオブジェクトフィールドをテキストとして返します。

次のクエリは、JSON形式ですべての顧客を取得するにはオペレータ->を使用しています。

enter image description here

し、次の問合せは、テキスト形式ですべての顧客を取得するにはオペレータ->>を使用しています。

enter image description here

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

+0

してください[画像として投稿しないでください](http://meta.stackoverflow.com/questions/285551/why-may-i-not-upload-コード・オン・オン・オン・ザ・イメージ - 285557) –

関連する問題