Error: no such function: json_each in SQLite with JSON1 installed
Error: no such function: json_each in SQLite with JSON1 installed
我已经通过 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_each
或 json_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
table 中的 Body
字段是有效的 JSON 字符串:
{"issue":{"fields":{"labels": ["foo","bar","baz"]}}}
而 labels
值是一个数组。
我已阅读文档(并查看了 json_each examples),搜索了互联网,但找不到启用此功能的任何其他要求。
我做错了什么,或者:我如何从 json_each/json_tree 中获益?
AFAIK,您不能在查询中使用 json_each()
和 json_tree()
作为字段,它们是 table-valued functions。您只能像表格一样使用它们。
问题是 json_each
和 json_tree
是 table 值函数 这意味着它们只能用于获取数据在内存中已经存在的虚拟 table 上,而不是直接从数据库中查询数据。
参见:The Virtual Table Mechanism Of SQLite
2.1.2. Table-valued functions
A virtual table that contains hidden columns can be used like a
table-valued function in the FROM clause of a SELECT statement. The
arguments to the table-valued function become constraints on the
HIDDEN columns of the virtual table.
当 SELECT json_each(Body, '$.issue.fields.labels') ...
sqlite3 找不到与其 SELECT
定义匹配的函数并导致您看到的错误时。
我已经通过 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_each
或 json_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
table 中的 Body
字段是有效的 JSON 字符串:
{"issue":{"fields":{"labels": ["foo","bar","baz"]}}}
而 labels
值是一个数组。
我已阅读文档(并查看了 json_each examples),搜索了互联网,但找不到启用此功能的任何其他要求。
我做错了什么,或者:我如何从 json_each/json_tree 中获益?
AFAIK,您不能在查询中使用 json_each()
和 json_tree()
作为字段,它们是 table-valued functions。您只能像表格一样使用它们。
问题是 json_each
和 json_tree
是 table 值函数 这意味着它们只能用于获取数据在内存中已经存在的虚拟 table 上,而不是直接从数据库中查询数据。
参见:The Virtual Table Mechanism Of SQLite
2.1.2. Table-valued functions
A virtual table that contains hidden columns can be used like a table-valued function in the FROM clause of a SELECT statement. The arguments to the table-valued function become constraints on the HIDDEN columns of the virtual table.
当 SELECT json_each(Body, '$.issue.fields.labels') ...
sqlite3 找不到与其 SELECT
定义匹配的函数并导致您看到的错误时。