2016-08-23 29 views
4

我有PostgreSQL的1維JSONB這樣的:如何獲得值的總和上JSONB列

SELECT '{"a": 1, "b": 2, "c": 3}'::jsonb; 

如何獲得值的總和上JSONB列? 像1 + 2 + 3的總和?

的PostgreSQL有jsonb_object_keys功能,但我一直在尋找類似「jsonb_object_values」(我知道,這個功能不存在)

# select jsonb_object_keys('{"a": 1, "b": 2, "c": 3}'::jsonb); 
jsonb_object_keys 
------------------- 
a 
b 
c 
(3 rows) 

回答

3

jsonb_each_text()功能擴展一組JSON的對象轉換成行格式爲(key, value)。由於它返回一組行,因此應將其用作行源。由於它以text格式返回數據,因此在進一步處理之前應將其轉換爲適當的類型。

SELECT sum(v::integer) 
FROM jsonb_each_text('{"a": 1, "b": 2, "c": 3}'::jsonb) j(k,v);