Какой правильный код в операционной системе Android SqLite? Код не работает - PullRequest
1 голос
/ 07 июня 2019

Я работаю с базой данных Sqlite в моем приложении. Я хочу найти слово и вернуть все результаты поиска по ИМЯ и РЕГИОНУ.

Поиск работает нормально, когда мой код ищет только в NAME, но при использовании ИЛИ только с функцией LIKE.

Я пытался использовать ИЛИ и || но это не работает.

fun getWords(wordPrefix: String = ""): Cursor {
    return if(wordPrefix.isBlank()) {
        readableDatabase.query(DatabaseEntryContract.TABLE_NAME, null,
                null, null, null, null,
                "${DatabaseEntryContract.COLUMN_NAME} ASC")
    } else {
        readableDatabase.query(DatabaseEntryContract.TABLE_NAME, null,
                "${DatabaseEntryContract.COLUMN_NAME} || ${DatabaseEntryContract.COLUMN_REGION} LIKE?", arrayOf("$wordPrefix%"),
                null, null,
                "${DatabaseEntryContract.COLUMN_NAME} ASC")
    }
}

Я ожидаю, что выход будет искать в ИМЯ и РЕГИОН. например, если я введу A в строке поиска.

В результатах должен быть показан весь префикс с А в ИМЯ и РЕГИОНЕ

1 Ответ

1 голос
/ 07 июня 2019

Вы можете попробовать: -

fun getWords(wordPrefix: String = ""): Cursor {
    return if(wordPrefix.isBlank()) {
        readableDatabase.query(DatabaseEntryContract.TABLE_NAME, null,
                null, null, null, null,
                "${DatabaseEntryContract.COLUMN_NAME} ASC")
    } else {
        readableDatabase.query(DatabaseEntryContract.TABLE_NAME, null,
                "${DatabaseEntryContract.COLUMN_NAME} LIKE? OR ${DatabaseEntryContract.COLUMN_REGION} LIKE?",
                arrayOf("$wordPrefix%","$wordPrefix%"),
                null, null,
                "${DatabaseEntryContract.COLUMN_NAME} ASC")
    }
}
...