错误:没有这样的函数:json_each在安装了JSON1的SQLite中

我通过brew安装了带有JSON1的SQLite3:

brew install sqlite3 --with-json1 --with-fts5 

版:

 3.15.2 2016-11-28 19:13:37 bbd85d235f7037c6a033a9690534391ffeacecc8 

在运行查询时,一些函数可以正常工作,比如json_extract

 sqlite> SELECT json_extract(Body, '$.issue.fields.labels') FROM Event WHERE json_extract(Body, '$.issue.fields.labels') != '[]'; ["foo","bar","baz"] 

但是,当我尝试使用json_eachjson_tree ,它失败:

 sqlite> SELECT json_each(Body, '$.issue.fields.labels') FROM Event WHERE json_extract(Body, '$.issue.fields.labels') != '[]'; Error: no such function: json_each 

Event表中的Body字段是一个有效的JSONstring:

 {"issue":{"fields":{"labels": ["foo","bar","baz"]}}} 

labels值是一个数组。

我已经阅读了文档(并查看了json_each示例 ),search了interwebs,但找不到任何其他要求来启用它。

我做错了什么,或者:我如何从json_each / json_tree中获得好处?

问题是json_eachjson_tree表值函数 ,这意味着它们只能用于在已经存在于内存中的虚拟表上获取数据,而不能直接从数据库查询数据。

请参阅: SQLite的虚拟表机制

2.1.2。 表值函数

包含隐藏列的虚拟表可以像SELECT语句的FROM子句中的表值函数一样使用。 表值函数的参数成为虚拟表的HIDDEN列上的约束。

SELECT json_each(Body, '$.issue.fields.labels') ... sqlite3找不到与它的SELECT定义相匹配的函数并导致出现错误。

AFAIK,你不能在查询中使用json_each()json_tree()作为字段,它们是表值函数 。 你只能像表一样使用它们。