2016-08-04 6 views
12

एसक्यूएल में ->> और -> के बीच क्या अंतर है?पोस्टग्रेस एसक्यूएल में `- >>` और `->` के बीच क्या अंतर है?

इस सूत्र (Check if field exists in json type column postgresql), उत्तर देने मूल रूप से उपयोग करने की सलाह में,

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' (और नहीं 'जेसन (बी) ')। –

+2

@AlexanderFarber मेरा मतलब है कि यह दोनों जेसन और जेसनबी को वापस कर सकता है इसलिए ब्रांड्स –

2

PostgreSQL आप 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- छवियों के-कोड-ऑन-तो-जब-पूछने एक प्रश्न/285,557) –

संबंधित मुद्दे