Consulta sqlite de Android para que coincida con la columna que contiene el texto
Tratando de hacer una consulta que devolverá una coincidencia si la columna dada contiene el texto en cualquier parte dentro. Por ejemplo, si tuviera que pasar la palabra "realmente" una columna que contiene el texto "Esta es una línea realmente larga de texto" coincidiría. Hasta ahora mis consultas sólo vuelven si coincide exactamente con lo que sólo coincide con una columna que contiene "realmente" y que es.
He intentado un par de maneras, pero ambos parecen volver el mismo resultado:
- Unir tablas en android
- Problema con SQL Query Android Where Clause
- Android, Diacritic Insensitive SQLite Búsqueda
- Excepción de puntero nulo de SQLiteOpenHelper.getWriteableDatabase () en Android
- Ormlite Android inserciones masivas
La primera manera (s es la cadena que estoy pasando):
Cursor cursor = mDb.query(DATABASE_TABLE, new String[] {KEY_TITLE}, KEY_TITLE + " LIKE '%" + s + "%' COLLATE NOCASE", null, null, null, null);
Camino siguiente
String p_query = "SELECT COUNT(*) FROM data WHERE number=? COLLATE NOCASE";
- Android SQLite Excepción: no se puede cerrar debido a declaraciones sin finalizar
- Intenta invocar el método virtual 'java.lang.Class java.lang.reflect.Field.getType ()' en una referencia de objeto nulo
- Android table creation Fallo (cerca de "autoincrement": error de sintaxis)?
- ¿Qué tan rápido es cursor.moveToPosition (i)?
- Agregar nueva tabla a la base de datos después de que la aplicación se haya ejecutado una vez
- ¿Cómo puedo crear una base de datos SQLite en Android mediante la importación de un archivo SQL?
- Ciclo de vida de la base de datos Sqlite? ¿Se elimina cuando se cierra la aplicación?
- Carácter turco en SQLite mientras utiliza la expresión LIKE
Tratando de hacer una consulta que devolverá una coincidencia si la columna dada contiene el texto en cualquier parte dentro.
Esto funciona para mí y está parametrizado:
Cursor cursor = mDb.query(DATABASE_TABLE, new String[] {KEY_TITLE}, KEY_TITLE + " LIKE ?", new String[] {"%" + s + "%"}, null, null, null);
"Realmente" es una palabra bastante distinta, pero si estás buscando algo como "hielo" y no quieres "dados", "vice", "helado", etc, tendrás que usar diferentes patrones como: "% " + s + " %"
y s + " %"
.
O utilice una tabla FTS con un tokenizer , como Porter Stemming.
- Diferencia entre la tecla Inicio de Android y la tecla Volver y su comportamiento
- GetLayoutParams devolver nulo?