PostgreSQL的#>及#>>操作符可用來篩選JSON型態(json、jsonb)的資料。#>的結果為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資料做篩選。
沒有留言:
張貼留言