2013-04-27 3 views
1

У меня есть некоторые элементы в базе данных. я фильтровать с помощью "как" ключевое словоЗапрос по запросу в Sqlite

Запрос: mCursor = mDb.query(listTable, new String[] { ID_rs, Item_name, item_code, Unit_code, Tot_Amt, dis_count, }, Item_name + " like '%" + mix + "%' ORDER BY " + Item_name + " ASC", null, null, null, null, null);

Ex: значения в базе данных 1.SAKTHI Readymix 2.curry Смешать 3.Mixture

мой результат: 1.SAKTHI Readymix 2.curry Mix 3.Mixture

Но мне нужно «curry Mix, Mixture» в качестве моего вывода, как я могу это получить. выручи меня!

+1

В чем разница между результатами, которые вы хотите, и теми, которые вы не хотите? –

+0

Можно ли это сделать с помощью "WHERE item_name = 'to' OR item_name = 'to'" Или "WHERE item_name IN ('to', 'to')"? – Dante

+1

@CL Мне нужно искать начало строки, а не слова в середине – APriya

ответ

1

Отправляясь на ваши комментарии,

Вы можете попробовать использовать синтаксис

Item_name + " like '" + mix + "%' OR " + Item_name + " like '% " + mix + "%'" 

Где в основном,

  • первые матчи те, которые начинаются с item_name,
  • ИЛИ атташе которые имеют пространство, за которым следует Item_name. Ака - новое слово. (обратите внимание на пробел после%)
+0

Я сделал это, используя Item_name + "like '%" + mix + "%' ИЛИ" + Item_name + "like" + + + +% + msgstr "Примечание: пробел после первого%. – APriya

0

Вы должны использовать где положение, которое использует оператор OR:

WHERE Item LIKE '%to' OR Item LIKE 'to%' 
1

В теории, самый простой способ будет создать full-text search table для имен элементов, но не все Android версии включена FTS.

Для поиска значений, начинающихся с mix, используйте LIKE. Для поиска значений, которые имеют mix в начале слова, используйте GLOB для поиска символа, который не является буквой, перед mix:

SELECT * 
FROM ListTable 
WHERE ItemName LIKE 'mix%' 
    OR ItemName GLOB '*[^a-zA-Z][mM][iI][xX]*' 

В отличие от LIKE, GLOB чувствителен к регистру, поэтому у вас есть для отображения как нижнего, так и верхнего регистра символов.

Если слово может содержать любые буквы, отличные от ASCII, вы должны добавить их в набор a-z.

1

, учитывая, что «@CL мне нужно искать запуск строки не слов в середине - APriya»

что, если вы пытаетесь:

Query:mCursor = mDb.query(listTable, new String[] { ID_rs, Item_name, item_code, Unit_code, Tot_Amt, dis_count, }, Item_name + " like '% " + mix + "%' ORDER BY " + Item_name + " ASC", null, null, null, null, null);

Обратите внимание на пробел после первого% , поскольку цель состоит в том, чтобы найти только записи, которые начинаются с mix.