AdSense

網頁

2022/2/19

PostgreSQL JSON #>#>>操作符

PostgreSQL的#>#>>操作符可用來篩選JSON型態(jsonjsonb)的資料。#>的結果為JSON物件;#>>的結果為text。


例如employee資料表目前有以下資料,欄位contact的型態為jsonb

 id | name | age |                         contact                         |         created_at
----+------+-----+---------------------------------------------------------+----------------------------
  1 | john |  33 | {"name": "mary", "phone": ["0912345678", "0912345679"]} | 2022-02-15 21:33:43.578068
  2 | tony |  23 | {"name": "bill", "phone": ["0921345678", "0921345679"]} | 2022-02-19 14:53:17.520679

查詢contact欄位的資料時,可使用#>後接字串(key名稱)及整數(陣列索引)組成的JSON路徑來取得JSON資料的內容。

例如下面查詢JSON的key為phone的陣列索引為0的值。

postgres=> SELECT contact #> '{phone, 0}' as phone_1 FROM employee;
   phone_1
--------------
 "0912345678"
 "0921345678"

上面相當於先用->取得key為phone的JSON物件,然後再以->取得陣列索引0的值。

postgres=> SELECT contact -> 'phone' -> 0 as phone_1 FROM employee;
   phone_1
--------------
 "0912345678"
 "0921345678"

查詢時WHERE條件也可使用#>依JSON資料做篩選。


沒有留言:

AdSense