2016-08-04 78 views
12

SQL中的->>->有什麼區別?Postgres SQL中` - >>`和` - >`有什麼區別?

在這個線程(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' (而不是'json(b)')。 –

+2

@AlexanderFarber我的意思是它可以返回json和jsonb因此括號 –

2

PostgreSQL提供了兩種本地運營商->->>幫您查詢JSON數據。

運算符->將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-圖像 - 的代碼上那麼當-要價-A-問題/ 285557) –

相關問題