SQLite запрос с LIKE не работает

Неправильно работает запрос с LIKE. Результат выдает только если вводить точный запрос. Например: Запрос: Покраска - результат Покраска, запрос: Краска - нет результата. В чем моя ошибка. Заранее всем большое спасибо.

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.test);

    userFilter = findViewById(R.id.userFilter);
    listView = findViewById(R.id.listView);

    listView.setVisibility(View.INVISIBLE);

    final DatabaseAccessSmeta databaseAccessSmeta = DatabaseAccessSmeta.getInstance(this);
    databaseAccessSmeta.open();
    String poisk = userFilter.getText().toString();
    List<String> quotes = databaseAccessSmeta.Search(poisk);
    databaseAccessSmeta.close();

    final ArrayAdapter<String> adapter = new ArrayAdapter<>(this, R.layout.region_list, quotes);
    listView.setAdapter(adapter);

    userFilter.addTextChangedListener(new TextWatcher() {
        public void afterTextChanged(Editable s) {
            String query = (s != null) ? s.toString() : "";
            if (query.length() >= 3) {
                listView.setVisibility(View.VISIBLE);
                adapter.getFilter().filter(query);
            } else {
                // Either set an empty list or change visibility
                listView.setVisibility(View.INVISIBLE);
                adapter.getFilter().filter("");
            }
        }
        public void beforeTextChanged(CharSequence s, int start, int count, int after) { }
        // при изменении текста выполняем фильтрацию
        public void onTextChanged(CharSequence s, int start, int before, int count) {  }
    });
}

Запрос к базе данных:

public List<String> Search(String poisk) {
    List<String> mylist = new ArrayList<>();
    String query;
    query = "SELECT * FROM smeta_name WHERE rabota LIKE '%"+poisk+"%'";
    this.database = openHelper.getWritableDatabase();
    Cursor cursor = database.rawQuery(query, null);
    cursor.moveToFirst();
    while (!cursor.isAfterLast()) {
        mylist.add(cursor.getString(cursor
                .getColumnIndex("rabota")));
        cursor.moveToNext();
    }
    cursor.close();
    return mylist;
}

Ответы (1 шт):

Автор решения: Barmaley

Оператор LIKE в SQLite правильно понимает только символы из набора ASCII:

Important Note: SQLite only understands upper/lower case for ASCII characters by default. The LIKE operator is case sensitive by default for unicode characters that are beyond the ASCII range. For example, the expression 'a' LIKE 'A' is TRUE but 'æ' LIKE 'Æ' is FALSE.

Ссылка на документацию

Соответственно, засовывать в LIKE кириллические символы/выражения бесполезно.

Это не баг, а фича :)

→ Ссылка