標籤:轉換 nbsp -- pos 沒有 路徑 href json res
1、left join 或者right join
資料庫在通過串連兩張或多張表來返回記錄時,都會產生一張中間的暫存資料表,然後再將這張暫存資料表返回給使用者。
2、處理json
官方解釋地址 https://www.postgresql.org/docs/9.5/static/functions-json.html
-> :是擷取json對象
--> : 是擷取的字串
#> : 根據路徑獲得json對象
#>> :根據路徑獲得字串
舉個栗子
有個json字串{"a":{"b":"c"}}
select ‘{"a":{"b":"c"}}‘::json ->‘a‘->>‘b‘ as result
返回結果
c
如果我擷取a的時候用的是->>,也就是執行這麼條語句select ‘{"a":{"b":"c"}}‘::json ->>‘a‘->>‘b‘ as result那麼就會報錯
執行資訊:
[SQL]select ‘{"a":{"b":"c"}}‘::json ->>‘a‘->>‘b‘ as result
[Err] 錯誤: 操作符不存在: text ->> unknown
LINE 1: select ‘{"a":{"b":"c"}}‘::json ->>‘a‘->>‘b‘ as result
^
HINT: 沒有匹配指定名稱和參數類型的操作符. 您也許需要增加明確的類型轉換.
報錯的原因呢就是就是 ->>返回的是text不是json對象所以後面的->>鬱悶了就報錯了。
那我如果就想這麼寫怎麼辦呢?
簡單,把text轉成json不就行了
select (‘{"a":{"b":"c"}}‘::json ->>‘a‘)::json->>‘b‘ as result
對了,這裡的()是需要注意的如果::json之前的東西沒用被括弧起來那麼會報錯的
select ‘{"a":{"b":"c"}}‘::json ->>‘a‘::json->>‘b‘ as result
[SQL]select ‘{"a":{"b":"c"}}‘::json ->>‘a‘::json->>‘b‘ as result
[Err] 錯誤: json類型使用了無效的輸入文法
LINE 1: select ‘{"a":{"b":"c"}}‘::json ->>‘a‘::json->>‘b‘ as result
^
DETAIL: 令牌 "a" 無效.
CONTEXT: JSON資料, 行 1: a
由此可以推測::優先順序較高
3、
postgresql 一些操作備忘