воскресенье, 15 января 2017 г.

SQLITE регистр для LIKE

SQLITE не учитывает регистр для оператора LIKE для русских символов.
Например у вас в базе есть, некоторое значение "тестовая строка";
Если вы напишите такой код : SELECT * FROM FOO WHERE str LIKE('%Тестовая строка');
результат запроса будет - 0;
Известные решения:

  1. Использовать расширение, которое уже есть стандартно - FTS3. Создание специальных виртуальных таблиц с поддержкой поиска и использование оператора MATCH
  2. Создать в вашей таблице еще один столбец(нормализованный), который будет содержать ту же инфу по которой вам нужно провести поиск, только в верхнем(или нижнем) регистре и делать LIKE по этому столбцу, но результат возвращать по обычному столбцу