函數 | 返回值 | 描述 | 用法示例 | 示例結果 |
json_array_length(json)
jsonb_array_length(jsonb)
| int
| 返回最外層json 數組中的元素個數。 | json_array_length('[1,2,3,{"f1":1,"f2":[5,6]},4]')
| 5
|
json_each(json)
jsonb_each(jsonb)
| set of key text, value json
set of key text, value jsonb
| 將最外層json 對象展開為一組鍵值對。 | SELECT * FROM json_each('{"a":"foo", "b":"bar"}')
| key | value
-----+-------
a | "foo"
b | "bar"
|
json_each_text(json)
jsonb_each_text(jsonb)
| set of key text , value text
| 將最外層json 對象展開為一組鍵值對。返回值是text類型。 | SELECT * FROM json_each_text('{"a":"foo", "b":"bar"}')
| key | value
-----+-------
a | foo
b | bar
|
json_extract_path(from_json json, VARIADIC path_elems text[])
jsonb_extract_path(from_json jsonb, VARIADIC path_elems text[])
| json
jsonb
| 返回由path_elems 指向的json 值(效果同#> 操作符)。 | json_extract_path('{"f2":{"f3":1},"f4":{"f5":99,"f6":"foo"}}','f4')
| {"f5":99,"f6":"foo"}
|
json_extract_path_text(from_json json, VARIADIC path_elems text[])
jsonb_extract_path_text(from_json jsonb, VARIADIC path_elems text[])
| text
| 以text 類型返回由path_elems 指向的JSON值(效果同#>> 操作符)。 | json_extract_path_text('{"f2":{"f3":1},"f4":{"f5":99,"f6":"foo"}}','f4', 'f6')
| foo
|
json_object_keys(json)
jsonb_object_keys(jsonb)
| set of text
| 返回最外層json 對象中的鍵集合。 | json_object_keys('{"f1":"abc","f2":{"f3":"a", "f4":"b"}}')
| json_object_keys
------------------
f1
f2
|
json_populate_record(base any element, from_json json)
jsonb_populate_record(base any element, from_json jsonb)
| any element
| 將from_json 中的對象展開為一行,它的列匹配是由base 定義的記錄類型。 | SELECT * FROM json_populate_record(null::myrowtype, '{"a": 1, "b": ["2", "a b"], "c": {"d": 4, "e": "a b c"}}')
| a | b | c
---+-----------+-------------
1 | {2,"a b"} | (4,"a b c")
|
json_populate_recordset(base any element, from_json json)
jsonb_populate_recordset(base any element, from_json jsonb)
| set of any element
| 將from_json 中最外的對象數組展開為一個集合,該集合的列匹配由base 定義的記錄類型。 | SELECT * FROM json_populate_recordset(null::myrowtype, '[{"a":1,"b":2},{"a":3,"b":4}]')
| a | b
---+---
1 | 2
3 | 4
|
json_array_elements(json)
jsonb_array_elements(jsonb)
| set of json
set of jsonb
| 將一個json 數組展開為一個json 值的集合。 | SELECT * FROM json_array_elements('[1,true, [2,false]]')
| value
-----------
1
true
[2,false]
|
json_array_elements_text(json)
jsonb_array_elements_text(jsonb)
| set of text
| 將一個json 數組展開為一個text 值集合。 | SELECT * FROM json_array_elements_text('["foo", "bar"]')
| value
-----------
foo
bar
|
json_typeof(json)
jsonb_typeof(jsonb)
| text
| 將最外層的json 值的類型作為一個文本字符串返回。可能的類型:object 、array 、string 、number 、boolean 及null 。 | json_typeof('-123.4')
| number
|
json_to_record(json)
jsonb_to_record(jsonb)
| record
| 由一個json 對象構建任意一條記錄。正如所有返回record 的函數一樣,用戶必須用一個AS 子句顯式地定義記錄的結構。 | SELECT * FROM json_to_record('{"a":1,"b":[1,2,3],"c":"bar"}')
as x(a int, b text, c text)
| a | b | c |
---+---------+-----+
1 | [1,2,3] | bar |
|
json_to_recordset(json)
jsonb_to_recordset(jsonb)
| set of record
| 由一個json 對象數組構建任意一條記錄集合。正如所有返回record 的函數一樣,用戶必須用一個AS 子句顯式地定義記錄的結構。 | SELECT * FROM json_to_recordset('[{"a":1,"b":"foo"},{"a":"2","c":"bar"}]') as x(a int, b text);
| a | b
---+-----
1 | foo
2 |
|
json_strip_nulls(from_json json)
jsonb_strip_nulls(from_json jsonb)
| json
jsonb
| 返回from_json ,其中所有存在空值的對象域都被省略,其他空值除外。 | json_strip_nulls('[{"f1":1,"f2":null},2,null,3]')
| [{"f1":1},2,null,3]
|
jsonb_set(jsonb, path text[], new_value jsonb[,create_missing boolean])
| jsonb
| 返回jsonb ,其中由path 指定的項用new_value 替換。若path 指定的項不存在并且create_missing 為true (默認為true )則加上new_value 。正如面向路徑的操作符一樣,出現在path 中的負整數表示從json 數組的末尾開始數。 | jsonb_set('[{"f1":1,"f2":null},2,null,3]', '{0,f1}','[2,3,4]', false)
jsonb_set('[{"f1":1,"f2":null},2]', '{0,f3}','[2,3,4]')
| [{"f1":[2,3,4],"f2":null},2,null,3]
[{"f1": 1, "f2": null, "f3": [2, 3, 4]}, 2]
|
jsonb_insert(target jsonb, path text[], new_value jsonb [, insert_after boolean])
| jsonb
| 返回被插入了new_value 的jsonb 。如果path 指定的jsonb 在一個jsonb 數組中,new_value 將被插入到目標之前(當insert_after 默認為false )或之后(當insert_after 為true )。如果path 指定的target 在一個jsonb 對象內,則只有target 不存在時才插入new_value 。對于面向路徑的操作符來說,出現在path 中的負整數表示從JSON數組的末尾開始數。 | jsonb_insert('{"a": [0,1,2]}', '{a, 1}', '"new_value"')
jsonb_insert('{"a": [0,1,2]}', '{a, 1}', '"new_value"', true)
| {"a": [0, "new_value", 1, 2]}
{"a": [0, 1, "new_value", 2]}
|
jsonb_pretty(from_json jsonb)
| text
| 將from_json 返回為一段縮進后的json 文本。 | jsonb_pretty('[{"f1":1,"f2":null},2,null,3]' )
| [
{
"f1": 1,
"f2": null
},
2,
null,
3
]
|
jsonb_path_exists(target jsonb, path jsonpath [, vars jsonb [, silent bool]])
| boolean
| 檢查json 路徑是否為指定的json 值返回任意項。 | jsonb_path_exists('{"a":[1,2,3,4,5]}', '$. a[*] ? (@ >= $min && @ <= $max)', '{"min":2,"max":4}')
| true
|
jsonb_path_match(target jsonb, path jsonpath [, vars jsonb [, silent bool]])
| boolean
| 返回指定的json 路徑檢查結果。 只考慮結果的首項。 如果結果非布爾值,則返回null 。 | jsonb_path_match('{"a":[1,2,3,4,5]}', 'exists($.a[*] ? (@ >= $min && @ <= $max))', '{"min":2,"max":4}')
| true
|
jsonb_path_query(target jsonb, path jsonpath [, vars jsonb [, silent bool]])
| set of jsonb
| 獲取指定的json 值的json 路徑返回的全部json 項。 | SELECT * FROM jsonb_path_query('{"a":[1,2,3,4,5]}', '$.a[*] ? (@ >= $min && @ <= $max)', '{"min":2,"max":4}');
| jsonb_path_query
------------------
2
3
4
|
jsonb_path_query_array(target jsonb, path jsonpath [, vars jsonb [, silent bool]])
| jsonb
| 獲取指定json 路徑返回的全部json 項,并將結果封裝為數組。 | jsonb_path_query_array('{"a":[1,2,3,4,5]}', '$.a[*] ? (@ >= $min && @ <= $max)', '{"min":2,"max":4}')
| [2, 3, 4]
|
jsonb_path_query_first(target jsonb, path jsonpath [, vars jsonb [, silent bool]])
| jsonb
| 獲取指定的json 值的第一個json 路徑返回的json 項。 如果無結果,則返回NULL 。 | jsonb_path_query_first('{"a":[1,2,3,4,5]}', '$.a[*] ? (@ >= $min && @ <= $max)', '{"min":2,"max":4}')
| 2
|