В среде разработки с SQLite 3.7.11
и Java
, несмотря на то, прочитайте следующие ответы:Использование в операторе с SQLite
я отыскания использование статьи SQLite IN
не очень прямолинейно.
Предположим простую таблицу TEST
со следующей структурой:
----------------------------
id PRODUCT TAG
(int) (text) (text)
----------------------------
1 Cinthol Soap, Bath, Cleaning
2 Vim Dishwash, Kitchen, Cleaning
3 Burger Food, Breakfast, Lunch, Dinner
Следующие запросы ведут себя таким образом:
----------------------------------------------------------------------------
Query Result Expected
----------------------------------------------------------------------------
SELECT PRODUCT FROM TEST WHERE TAG IN('Soap') Cinthol Cinthol
SELECT PRODUCT FROM TEST WHERE TAG IN('Dinner') <EMPTY> Burger
SELECT PRODUCT FROM TEST WHERE TAG IN('Soap', 'Bath') <EMPTY> Cinthol
SELECT PRODUCT FROM TEST WHERE TAG IN('Cleaning') <EMPTY> Cinthol, Vim
Так вопросы:
- За исключением первой запрос, почему другие не дают ожидаемых результатов? Есть что-то принципиально неправильное в понимании?
- Если неверно, какой правильный запрос получить ожидаемые результаты (без использования функции
instr
)?
Кроме того, столбец TAG
в конечном итоге должен быть связан с массивом токенов в Java, построив запрос динамически. Однако перечисленные выше ответы имеют указатели на это.
Заранее благодарен!
лучшим решением является нормализация базы данных ... также все ожидаемое значение должно be 'empty' – Selvin
доказательство, что должно быть пустым: http://sqlfiddle.com/#!7/0c8a60/2 – Selvin
' IN' видит, что вещь слева содержится в списке справа; если одна из «составляющих» предмета слева указана справа. – TripeHound