¿Cómo puedo crear una función definida por el usuario en SQLite?

Estoy desarrollando una aplicación en Android y necesito crear un udf en sqlite. ¿Es posible crearlo en sqlite? Y si es así, ¿cómo hacer esto?

SQLite no tiene soporte para funciones definidas por el usuario en la forma en que lo hace Oracle o MS SQL Server. Para SQLite, debe crear una función de callback en C / C ++ y conectar la función usando la llamada sqlite3_create_function .

Desafortunadamente, la API SQLite para Android no permite la llamada sqlite3_create_function directamente a través de Java. Para que funcione, deberá comstackr la biblioteca SQLite C con el NDK .

Y si todavía está interesado, lea 2.3 Funciones definidas por el usuario …

A continuación se explica cómo crear una función que encuentre el primer byte de una cadena.

 static void firstchar(sqlite3_context *context, int argc, sqlite3_value **argv) { if (argc == 1) { char *text = sqlite3_value_text(argv[0]); if (text && text[0]) { char result[2]; result[0] = text[0]; result[1] = '\0'; sqlite3_result_text(context, result, -1, SQLITE_TRANSIENT); return; } } sqlite3_result_null(context); } 

Luego adjunte la función a la base de datos.

 sqlite3_create_function(db, "firstchar", 1, SQLITE_UTF8, NULL, &firstchar, NULL, NULL) 

Finalmente, use la función en una statement SQL.

 SELECT firstchar(textfield) from table 

No válido – ver comentarios

Debería ser posible con SQLiteCustomFunction desde Android sdk 17 que le proporciona una callback en código Java.

Agregar con el método addCustomFunction en SQLiteDatabase .

Pero debo decir que no tengo experiencia con eso …