I know that one can not pass SQLITE_FUNC_LIKE to sqlite3_create_function(). I just try to figure out how things work internally in sqlite source. As far as I see there is no way to tell sqlite to use indexes for overloaded LIKE or other sqlite3_create_function() calls. Internally SQLITE_FUNC_LIKE is checked to see if an index can be used or not. What I need is a way to "bind" SQLITE_FUNC_LIKE flag to my custom LIKE function from API. Maybe it is a good idea to add some function or extra FLAG to sqlite_create_function() to tell the engine: you can safely use indexes on that function. The thing with ICU: in icu.c "sqlite3_create_function()" is used to register "icuLikeFunc" for "LIKE" operator. This means that icuLikeFunc can not use indexes either?