我有一个 SQLite 数据库,其中包含一个具有文本列的表。在本专栏中,我存储了一个 JSON 字符串数组。
这是表格,已缩短为仅包含相关内容:
CREATE TABLE "recipePreview" (
"id" INTEGER PRIMARY KEY AUTOINCREMENT,
"name" TEXT NOT NULL, "intro" TEXT,
"tags" TEXT
)
还有一些示例数据(手写可能包含语法错误......):
INSERT INTO recipePreview (id, name, tags) VALUES (NULL, "My recipe", '["glutenFree","raw","naturallySweetened","vegan"]')
INSERT INTO recipePreview (id, name, tags) VALUES (NULL, "My other recipe", '["aquafaba","glutenFree","vegan"]')
我想根据tags
列中 JSON 数组的内容过滤这些行。例如; 一个查询,返回所有带有 . 标记的食谱raw
。我可以使用以下查询来做到这一点:
SELECT * FROM recipePreview, json_tree(recipePreview.tags, '$')
WHERE value = "a tag"
不过,我无法弄清楚的是,是否有办法让AND
我的WHERE
克劳斯拥有一个。IE。看起来像这样的东西:
SELECT * FROM articles, json_tree(recipePreview.tags, '$')
WHERE value = "a tag" AND value = "another tag"
我不想只做一个字符串比较(使用LIKE
),因为一个标签可能包含另一个标签的一部分。在搜索带有candy
I don't want to get hits for candy cotton
(人为示例)标记的食谱时。
OR
查询使用以下方法,因为json_tree
实际上为 JSON 数组中的每个条目创建了“多行”。
这是否可以使用JSON1
扩展名?