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資料做篩選。
沒有留言:
張貼留言