Cómo buscar cadenas similares en SQLite

Quiero buscar en la tabla "TABLE_TOURS" palabras similares de "query" en cloumn "COLUMN_TITLE" y devolver una lista "List". Me ayuda a plzz

public List<Tour> getWordMatches(String query, String[] columns) { String selection = ToursDBOpenHelper.COLUMN_TITLE + " MATCH ?"; String[] selectionArgs = new String[] {query+"*"}; return query(selection, selectionArgs, columns); } public List<Tour> query(String selection, String[] selectionArgs, String[] columns) { Log.i(LOGTAG, "getwordsmatches result"+ selection +" "+ selectionArgs); SQLiteQueryBuilder builder = new SQLiteQueryBuilder(); builder.setTables(ToursDBOpenHelper.TABLE_TOURS); Cursor cursor = builder.query(dbhelper.getReadableDatabase(), columns, selection, selectionArgs, null, null, null); Log.i(LOGTAG, "cursor of db result "+ cursor); List<Tour> tours = cursorToList(cursor); Log.i(LOGTAG, "tours are "+ tours); if (cursor == null) { return null; } else if (!cursor.moveToFirst()) { cursor.close(); return null; } return tours; } 

Y su método cursorToList:

 private List<Tour> cursorToList(Cursor cursor) { List<Tour> tours = new ArrayList<Tour>(); if (cursor.getCount() > 0) { while (cursor.moveToNext()) { Tour tour = new Tour(); tour.setId(cursor.getLong(cursor.getColumnIndex(ToursDBOpenHelper.COLUMN_ID))); tour.setTitle(cursor.getString(cursor.getColumnIndex(ToursDBOpenHelper.COLUMN_TITLE))); tour.setCate(cursor.getString(cursor.getColumnIndex(ToursDBOpenHelper.COLUMN_CATE))); tour.setDetail(cursor.getString(cursor.getColumnIndex(ToursDBOpenHelper.COLUMN_DETAIL))); tour.setDescription(cursor.getString(cursor.getColumnIndex(ToursDBOpenHelper.COLUMN_DESC))); tour.setImage(cursor.getString(cursor.getColumnIndex(ToursDBOpenHelper.COLUMN_IMAGE))); tours.add(tour); } } return tours; } 

    3 Solutions collect form web for “Cómo buscar cadenas similares en SQLite”

    Puede utilizar la instrucción SQL LIKE para esto. En SQL, el carácter% representa cualquier cadena de 0 o más caracteres. Así, por ejemplo, usted podría escribir

     SELECT * FROM MY_TABLE WHERE COLUMN_NAME LIKE '%dog%' 

    Esto coincidirá con cualquier cadena que contenga "perro", como "perro", "perros", "Me gustan los perros" y "123dog321".

    Sus argumentos exactos variarán en función de la estructura de su tabla, pero esta es la esencia de la misma.

    Intente usar la palabra clave Like que coincida con cualquier sintaxis que especifique Ver este tutorial aquí

    Y página de Sqlite



    Ejemplo: Cursor c = myDB.query(MY_DATABASE_TABLE, "songname","songname like ?" , new String[]{"%"+MATCH_STRING+"%"}, null,"SongHit", null);

    El método que ejecuta la consulta debe ser así:

     public List<Tour> findByTitle(String string) { String query; query = "SELECT * FROM tours WHERE title LIKE '%"+ string +"%'"; Cursor cursor = database.rawQuery(query, null); Log.i(LOGTAG, "Returned " + cursor.getCount() + " rows"); List<Tour> tours = cursorToList(cursor); return tours; } } 
    FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.