Если вы используете Room, вы можете попробовать следующее (используя Kotlin):
@Query("select * from User_DNA WHERE sequence LIKE :search")
fun getItem(search: String): UserDNA?
Установив параметр search для этого метода, вы должны указать шаблон поиска как "[ ваша строка поиска]% ", например:" dog% "
если мой поисковый запрос - собака, запрос должен возвращать true или один из элементов (dogsequence / doggysequence), что когда-либо эффективно
Вы можете проверить результат запроса - если он нулевой, значит, в вашем столбце нет совпадающих значений.
ОБНОВЛЕНО
Если вы хотите найти «hor» с «ужасным», я могу предложить следующий способ (возможно, это задача для RegExp, но, честно говоря, я не использовал это в КОМНАТЕ):
- Вы можете поместить два метода в свой DAO. Один из способов - вспомогательный, его задача - заполнить список словами, которые мы хотим найти. Например, для шаблона "ужасный" этот метод должен подготовить список с {"ужасный", "ужасный", "ужасный", "ужасный", "ужасный", "ужасный"}.
- Второй метод должен получить результат SQLite, где ваши поля содержат значение из списка, подготовленного на шаге 1. Этот метод должен быть аннотирован аннотацией Room.
- Итак, первый метод подготавливает список, вызывает запрос для поиска слова в SQLite и возвращает его в ViewModel (или репозиторий).
Что-то вроде этого :
@Query("select * from User_DNA WHERE sequence IN (:search) ORDER BY sequence")
fun getItem(search: List<String>): User_DNA?
fun findItem(search: String): User_DNA? {
val searchList = mutableListOf<String>()
val minimalStringLength = 2 // it's up to you, maybe 1?
while (search.length > minimalStringLength) {
searchList.add(search)
search = search.dropLast(1)
}
return getItem(searchList.toList())
}