У меня есть база данных 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"]')
Я хочу отфильтровать эти строки на основе содержимого массива JSON в столбце tags
.Например;запрос, который возвращает все рецепты, помеченные raw
.Я могу сделать это, используя этот запрос:
SELECT * FROM recipePreview, json_tree(recipePreview.tags, '$')
WHERE value = "a tag"
Что я не смог выяснить, так это есть ли способ иметь AND
в моем WHERE
предложении.То есть.что-то похожее на это:
SELECT * FROM articles, json_tree(recipePreview.tags, '$')
WHERE value = "a tag" AND value = "another tag"
Я не хочу просто сравнивать строки (используя LIKE
), потому что один тег может содержать частидругой тег.При поиске рецептов, помеченных candy
, я не хочу получать хиты для candy cotton
(надуманный пример) .
OR
запросов работают со следующим подходом как json_tree
фактически создает «много строк» для каждой записи в массиве JSON.
Возможно ли это как-то с использованием расширения JSON1
?