Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Поиск без учета регистра данных в utf8 в MySQL 4.0
 
 автор: dasha   (15.04.2006 в 23:31)   письмо автору
 
 

Воздникла следующая проблема:
Необходимо реализовать поиск по базе без учета регистра. Данные хранятся в utf8, база MySQL 4.0.2 . Реализую поиск оператором LIKE, в английской версии всё работает удачно, регистр не учитывается, в русской версии такого нет. Проверяла то же самое на MySQL 4.1 , такой проблемы нет - я так понимаю, там заплатку поставили разработчики. Но что делать в MySQL 4.0.2 . Помогите, пожалуйста, уже не первый раз сталкиваюсь с этой задачей и до сих пор не нашла решения.

   
 
 автор: cheops   (16.04.2006 в 13:15)   письмо автору
 
   для: dasha   (15.04.2006 в 23:31)
 

Там даже не заплатка, а полностью переработанная система кодировок и сортировок, причём настолько гибкая, что ещё не все коммерческие базы данных имеют аналоги. До версии 4.1 с национальными языками в MySQL работать достаточно сложно, тем более в UTF8 - нужно переходить на версию MySQL 4.1 (если есть возможность).

   
 
 автор: dasha   (16.04.2006 в 20:44)   письмо автору
 
   для: cheops   (16.04.2006 в 13:15)
 

К моему большому сожалению проапгрейдить MySQL пока не возможно, неужели совсем ничего нельзя сделать. Уже голову сломала что бы такое придумать, чтобы обойти эту проблему. Пишу на php, быть может какую-то функциональность возможно переложить на скрипт?. Буду очень благодарна совету

   
 
 автор: cheops   (16.04.2006 в 21:11)   письмо автору
 
   для: dasha   (16.04.2006 в 20:44)
 

Хм... вообще шансов извернуться не так много с UTF8, а у вас какая структура таблицы, что это - статьи, товарные позиции или что-то ещё? Что ищем?

   
 
 автор: Dasha   (16.04.2006 в 22:59)   письмо автору
 
   для: cheops   (16.04.2006 в 21:11)
 

Есть таблица, в которой содержится поле типа varchar(255) - куда записывается фамилия, есть поле с id человека. Мне нужно выбрать id , где фамилия будет удовлетворять введённым символам без учета регистра. На данный момент, если я ищу человека по фамилии Петров, вводя соответствующее значение в поле формы, то из базы выбирается нужный id, а если я ищу петров , то никакого id естественно нет. Нужно это как-то побороть.
В данный момент упрощенно запрос выглядит так :
select id from table1 where binary(last_name) like '%.$temp.%' ;
где $temp - слово поиска

   
 
 автор: Trianon   (17.04.2006 в 13:21)   письмо автору
 
   для: Dasha   (16.04.2006 в 22:59)
 

Можно попробовать искать все естественные формы - исходную, маленькими буквами, большими буквами, маленькими, начиная с большой:

$f1 = strtolower($temp) ;
$f2 = strtoupper($temp);
$f3 = ucfirst($temp);
$query = "select id from table1
 where binary(last_name) like '%$temp%'  
 or binary(last_name) like '%$f1%' 
 or binary(last_name) like '%$f2%' 
 or binary(last_name) like '%$f3%' ";

Правда, если данные в UTF-8, не исключено, что преобразование символов придется обрамить преобразованием кодировок. Не уверен, что strtolower, strtoupper, ucfirst сами станут работать с UTF-8

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования