PostgreSQL的->>操作符可用來篩選JSON型態(json、jsonb)的資料,取得的結果為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的key為name的值。
postgres=> SELECT contact ->> 'name' as contact_name FROM employee;
contact_name
--------------
"mary"
"bill"
下面先用->篩選JSON的key為phone的JSON物件,然後以->>取得陣列索引為0的值。
postgres=> SELECT contact -> 'phone' ->> 0 as phone_1 FROM employee;
phone_1
--------------
"0912345678"
"0921345678"
查詢時WHERE條件也可使用->>依JSON資料做篩選。
例如下面查詢contact JSON資料中key name值為bill的資料。
SELECT * FROM employee
WHERE contact ->> 'name' = 'bill';
查詢結果。
postgres=> SELECT * FROM employee WHERE contact ->> 'name' = 'bill';
id | name | age | contact | created_at
----+------+-----+---------------------------------------------------------+----------------------------
2 | tony | 23 | {"name": "bill", "phone": ["0921345678", "0921345679"]} | 2022-02-19 14:53:17.520679
沒有留言:
張貼留言