我已经通过brew安装了SQLite3和JSON1:
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
Body
表中的Event
字段是有效的JSON字符串:
{"issue":{"fields":{"labels": ["foo","bar","baz"]}}}
labels
值是一个数组。
我已阅读文档(并查看了json_each examples),搜索了互联网,但无法找到任何其他要求来启用此功能。
我做错了什么,或者:我如何从json_each / json_tree中获益?
答案 0 :(得分:2)
问题是var db *sqlx.DB
// exactly the same as the built-in
db = sqlx.Open("sqlite3", ":memory:")
var p Person
udb := db.Unsafe()
err = udb.Get(&p, "SELECT * FROM person, place LIMIT 1;")
和json_each
是表值函数,这意味着它们只能用于获取内存中已存在的虚拟表上的数据,而不是直接从数据库中查询数据。
请参阅:The Virtual Table Mechanism Of SQLite
2.1.2。表值函数
包含隐藏列的虚拟表可以像a一样使用 SELECT语句的FROM子句中的表值函数。该 表值函数的参数成为约束 虚拟表的HIDDEN列。
当json_tree
sqlite3无法找到与其SELECT json_each(Body, '$.issue.fields.labels') ...
定义匹配的函数时,会导致您看到错误。
答案 1 :(得分:1)
AFAIK,您不能在查询中使用//search bus no
$(document).on('click' , '.bus_no_search li' , function(){
$('#bus_no').val($(this).text());
$('.bus_no_search').fadeOut();
});
//search source
$(document).on('click' , '.source_search li' , function(){
$('#source').val($(this).text());
$('.source_search').fadeOut();
});
和json_each()
作为字段,它们是table-valued functions。你只能像表一样使用它们。