2013-08-13 2 views
0
WHERE g.value like '" + lookingFor + "%' 

У меня есть EditText, который фильтрует курсор из базы данных SQLite. Я хочу взять «значение» из таблицы «g». Например, одним из значений является «полная остановка». Когда я вводю «stop», запрос должен найти полную остановку.Пространство в запросе SQLite

Если lookFor is "efg", ничего не найдено. Как найти «abcd efgh», когда набирается «efg»?

PS. Я не хочу, чтобы получить «ABCD edfh», когда я типа «CD»

+0

Можете ли вы объяснить дальше? – midhunhk

+0

Я думаю, вам может понадобиться% в начале строки, например, например, «%» + lookFor + «%». Ваш код будет искать поле, которое начинается с efg и заканчивается на что угодно – CurlyPaul

+0

К сожалению, он найдет «abcd efgh», когда я наберу «cd», справа –

ответ

0

Перед запросом:

String strSpace=" "; 

Внутри запроса:

"... WHERE g.value like '"+ lookingFor + "%' OR g.value like '%"+strSpace + lookingFor + "%' ..." 
0

Попробуйте это:

Cursor oCursor = myDatabasequery(true, DATABASE_TABLE, new String[]{column1, column2,column3}, column2+ " LIKE '%" + lookingFor + "%'", null, null, null, null, null); 

В коде:

... WHERE g.value LIKE '%" + lookingFor + "%' " 

Он будет искать вашу строку независимо до и после этого

+0

Как это сделать в необработанном запросе? –

+0

Я отредактировал, пожалуйста, проверьте –

3

Попробуйте использовать
WHERE g.value like '%" + lookingFor + "'

+0

К сожалению, он найдет «abcd efgh», когда я набираю «cd», правильно? –

1

% перед поиском в sql означает, что могут быть другие данные до lookingFor. % после того, как lookFor представляет, что могут быть другие данные после lookingFor.

Так что, если вы хотите, чтобы найти «EFG», когда у вас есть данные, такие как «ABCD EFGH» вам нужно сделать:

....WHERE g.value LIKE '%" + lookingFor + "%' "; 

И да, к сожалению, это найти «абвг ..» при вводе «компакт-диск ». Чтобы исправить это, вы можете проверить значение lookFor, прежде чем выполнять команду sql.

if(lookingFor.equals("efg") 
{ 
    ....WHERE g.value LIKE '%" + lookingFor + "%' "; 
} 
else 
{ 
    //Do whatever you want here if the value is not "efg". 
} 

Успехов

+0

как сделать это: перед запросом String strSpace = "" –

+0

WHERE g.value LIKE 'strSpace + lookingFor + "%'" –

+0

Дополнительное пространство, которое вы вводите, просто добавляется в lookFor, поэтому теперь lookFor - это «efg», что приведет вас к проблеме, с которой вы столкнулись с самого начала; то есть он не будет устранять проблему – ClaireG

Смежные вопросы