Что нового

LIKE и ORDER BY в SQLite и русские буквы

vovsla

Осваивающий
Сообщения
607
Репутация
36
Не работает нечувствительный к регистру LIKE и ORDER BY с русскими буквами.
Например:
sqlite> SELECT "ы" LIKE "Ы";
0
в то время как
sqlite> SELECT "s" LIKE "S";
1

На всякий случай пробовал UPPER('СТРОКА') LIKE UPPER('строка') и
LOWER('СТРОКА') LIKE LOWER('строка') , не помогает

Решение проблемы нашёл тут http://habrahabr.ru/blogs/sql/57915/ , но хотелось бы узнать, может уже есть UDF которая решает проблему автоматически?
 

YOgen

Знающий
Сообщения
58
Репутация
5
Это решение читал, но так и не понял как можно реализовать.
Может быть кто-нибудь подскажет? :whistle:
 
Автор
V

vovsla

Осваивающий
Сообщения
607
Репутация
36
Я тоже не понял как реализовали там и сделал по своему.
В базу добавил дубликат столбца но значения в столбце в виде строки которая была получена из массива кодировки текста.
Код:
$String=StringToASCIIArray(StringLower('любой текст'))
Insert into ... '" & _ArrayToString($String) & "'...


и соответственно делаем поиск
Код:
$String=StringToASCIIArray(StringLower('текст'))
..." LIKE '%" & _ArrayToString($String) & "%'...
 

YOgen

Знающий
Сообщения
58
Репутация
5
Vovsla
На больших объемах информации (мне требовалось это проводить в таблицах в 100.000 и более строк) будет очень долго обрабатывать.
Тут же на форуме (не помню даже у кого) нашел уже скомпилированный вариант sqlite3.dll с возможностью работы с русскими символами:
- скачиваем https://www.dropbox.com/s/fpy879zfvtreddf/opimal_sqlite3_7_5_ICU.rar ;
- кладем icudt38.dll, icuin38.dll, icuuc38.dll, mingwm10.dll, sqlite3.dll в папку со скриптом;
- в _SQLite_Open() указываем путь к sqlite3.dll.
 
Верх