android - type - sqlite3 datetime
Android, Diacritic Insensible SQLite Search (1)
Estoy tratando de consultar una base de datos SQLite en Android donde los caracteres franceses con acentos deben manejarse como los caracteres latinos normales, por ejemplo:
SELECT * FROM x WHERE y LIKE %cafe%
debería regresar
café, câfè, ...
He buscado en Google durante todo un día y leí todas las publicaciones relacionadas con stackoverflow. La posibilidad de agregar una columna a la tabla que incluye títulos normalizados no es una opción, ya que la base de datos se obtiene de un servidor y es mantenida por un tercero.
Usando colaciones mencionadas en otras publicaciones como
Latin1_general_CI_AI
tampoco es una opción, porque SQLite solo admite 3 (en Android 5) intercalaciones que no me ayudan.
Configuración de la base de datos en Android para
Locale.FRENCH
y usando colación
COLLATE LOCALIZED
Tampoco hace el truco.
Sé que hay una bandera en iOS (DiacriticInsensitiveSearch) que lo hace automáticamente y, por lo tanto, espero que algo como esto también esté disponible para Android.
¿Algunas ideas? ¡Gracias por adelantado!
La posibilidad de agregar una columna a la tabla que incluye títulos normalizados no es una opción, ya que la base de datos se obtiene de un servidor y es mantenida por un tercero.
Puede crear una tabla separada con una columna normalizada y una clave externa para la tabla original. Creo que esta es la única opción que tienes con sqlite en Android.
O si pudiera crear de alguna manera la función remove_diacritics
definida por el remove_diacritics
, entonces seleccionaría así:
SELECT * FROM x WHERE remove_diacritics(lower(y))
LIKE remove_diacritics(lower(%cafe%))
Pero cuidado, un índice en xy
no se usará. También puede que no necesites lower
. Pero por lo que sé, crear funciones no es tan fácil en sqlite, si es posible.