SQLite
json_each()函数遍历指定 JSON 文档,为每个直接子元素生成一行,最终返回由所有的行组成的结果集。
SQLite
json_each()函数只遍历 JSON 对象或者数组的直接子元素,或者如果元素为原始类型,则遍历元素本身。
SQLite
json_each()函数是一个表值函数,类似的函数有:
json_tree()。
json_each()
语法
这里是 SQLite
json_each()的语法:
json_each(json, path)
参数
json必需的。一个 JSON 文档。
path可选的。一个路径表达式。
返回值
SQLite
json_each()函数返回一个具有以下列的结果集:
key如果 JSON 为数组,则
key列为数组的索引;如果 JSON 为对象,则
key列为对象的成员名称;其他情况,
key列为
NULL。
value当前元素的值。
type当前元素的 JSON 类型。可能的值:
'null'、
'true'、
'false'、
'integer'、
'real'、
'text'、
'array'、
'object'。 他们与
json_type()函数相同。
atom如果
value是 JSON 原始类型,
atom存储其对应的 SQL 值;否则该列为
NULL。
id标识此行唯一性的一个整数。
parent父元素的整数 ID。 此列永远为
NULL。
fullkey它是当前行元素的路径。
path当前行元素的父元素的路径。
json_each()
示例
这里列出了几个常见的
json_each()用法示例。
示例: 数组
在这个示例中,我们使用
json_each()函数遍历一个 JSON 数组中的元素:
SELECT * FROM json_each('[1, 2, 3]'); key value type atom id parent fullkey path--- ----- ------- ---- -- ------ ------- ----0 1 integer 1 1 $[0] $1 2 integer 2 2 $[1] $2 3 integer 3 3 $[2] $
示例: 对象
在这个示例中,我们使用
json_each()函数遍历一个 JSON 对象中的元素:
SELECT * FROM json_each('{"x": 1, "y": 2}'); key value type atom id parent fullkey path--- ----- ------- ---- -- ------ ------- ----x 1 integer 1 2 $.x $y 2 integer 2 4 $.y $
示例:指定路径
在这个示例中,我们使用
json_each()函数遍历一个 JSON 数组中的通过路径指定的元素:
SELECT * FROM json_each('[{"x": 1, "y": 2}]', '$[0]'); key value type atom id parent fullkey path--- ----- ------- ---- -- ------ ------- ----x 1 integer 1 3 $[0].x $[0]y 2 integer 2 5 $[0].y $[0]
