Вопрос по поводу учета регистра при поиске

Keron

Новичок
Вопрос по поводу учета регистра при поиске

Суть такова, имеетеся табличка mysql, идет поиск по одному полю, а именно [Фамилия varchar[100] binary] . Данные в это поле заносятся, учитывая регистр, т.е. к примеру {Иванов}

Как сделать так, чтобы в поиске я писал к примеру [ива] - в нижнем регистре, и чтобы строчка нашлась. Пока я использую запрос:

SELECT * FROM table WHERE surname LIKE '%$surname%'
 

Keron

Новичок
лично мне - для корретной сортировки, т.к. в поле есть и кирриллица а есть и латиница, без этого сортировка происходит беспорядочно
 

Mr_Max

Первый класс. Зимние каникулы ^_^
Команда форума

Keron

Новичок
хотите сказать проблема правилах сравнения

т.е. cp1251_bin заменить на cp1251_general_ci ?
 

Фанат

oncle terrible
Команда форума
почему 99% посетителей этого форума всегда формулируют вопрос "значит, мне надо сделать тот-то"?
почему никогда от них не услышишь "мне надо ПОНЯТЬ что-то"?
Откуда эта буратинская практичность?
 

Keron

Новичок
Автор оригинала: *****
почему 99% посетителей этого форума всегда формулируют вопрос "значит, мне надо сделать тот-то"?
почему никогда от них не услышишь "мне надо ПОНЯТЬ что-то"?
Откуда эта буратинская практичность?
Я как раз и пытаюсь понять

ксатати за линк спасибо, полезная инфа, проблему решил!
 

Фанат

oncle terrible
Команда форума
Ну так что там, по ссылке, написано про неправильную сортировку? Что надо поменять одно заклинание (cp1251_bin ), на другое(cp1251_general_ci) и все сразу заработает?
 

Keron

Новичок
Автор оригинала: *****
Ну так что там, по ссылке, написано про неправильную сортировку? Что надо поменять одно заклинание (cp1251_bin ), на другое(cp1251_general_ci) и все сразу заработает?
ну, в принципе вот это помогло с поиском:

линк
Обычно у каждой кодировки есть, как минимум, два набора правил сравнения - имякодировки_bin и имякодировки_general_ci. Первый сравнивает в лоб по кодам символов, а второй - регистронезависимо, учитывая совпадающие символы.
-~{}~ 17.02.08 19:53:

только появилась проблемка - при смене кодировок с cp1251 на cp1250 в поле появились вместо кириллицы вопросы, при обратной смене вопросы сохранились - почему так?
 

Beavis

Banned
ты всё таки так ничего и понял о кодировках

попробуй взять текст (да хоть любой текстовый документ в блокноте), заменить в нем все буквы на знаки вопроса а потом изменить их обратно на буквы....
 

Фанат

oncle terrible
Команда форума
Странно. Если у тебя изначально сортировало криво, то, на мой взгляд, стояла неправильная кодировка.
 

Фанат

oncle terrible
Команда форума
мля. потому что ты испортил себе данные

-~{}~ 17.02.08 20:04:

Вот опять я не понимаю.
По ссылке написан ЗДОРОВЕННЫЙ раздел о том, как правильно менять кодировку.
Ну ладно. Есть люди, которые не могут осилить два экрана текста.
Но спечиально для них, в самом начале написаyj - "если проблемы с сортировкой - см. пункт про перекодировку."

ЧЕМ НАДО ДУМАТЬ, чтобы после этого cделать alter table?
 

Keron

Новичок
Автор оригинала: *****
Странно. Если у тебя изначально сортировало криво, то, на мой взгляд, стояла неправильная кодировка.
ситуация была такова, кодировка изначально была cp1251 а правила сравнения не было :)
поэтому видимо и сортировка была кривая, а именно вывод происходил вразброс - сначала цифры, затем вперемешку латинские и кириллица

сейчас помудрил с правилами сравнения (для регистронезависинья при поиске) и ненароком сменил кодировку на cp1250 и пр сравнения yf что-то там с Хорватским.

Дамп до этого был сделан )

В принципе более менее понятно что к чему, проще говоря:

1) кодировка, в которой должны лежать данные должна совпадать с кодировкой поля
2) правила сравнения или порядок сортировки т.е. COLLATION - тут уже есть варианты, регистронезависимое сравнения, регистрозависимое и прочие

это верно?

едиственный вопрос еще остается - только потому что не были заданы COLLATION - поэтому происходила неправильная сортировка (перемешка латиницы и киррилицы) или могут быть другие причины?

-~{}~ 17.02.08 20:16:

Автор оригинала: *****
мля. потому что ты испортил себе данные

-~{}~ 17.02.08 20:04:

Вот опять я не понимаю.
По ссылке написан ЗДОРОВЕННЫЙ раздел о том, как правильно менять кодировку.
Ну ладно. Есть люди, которые не могут осилить два экрана текста.
Но спечиально для них, в самом начале написаyj - "если проблемы с сортировкой - см. пункт про перекодировку."

ЧЕМ НАДО ДУМАТЬ, чтобы после этого делать alter table?
ты прав делал я без дампа ступил )
 

ys

отодвинутый новичок
Я вот что думаю.
В фак нужно обязательно включить пункт про дамп базы данных. До того, как вообще его читать.
И внести пункт: "если у вас в дампе базы данных все впорядке (нет знаков вопроса, etc...)", то вы можете читать его далее...
 

Фанат

oncle terrible
Команда форума
слушай, сколько процентов текста ты прочитал по ссылке? 2? 5? Там открытым текстом, черным по белому написаны ответы на твои вопросы.
Которые даже противоречат друг другу.
Ты можешь, наконец, прочитать целиком?

БЫЛО у тебя правило сравнения. БЫЛО. Только ты до сих пор не удосужился узнать - какое именно
 

zilot

Новичок
едиственный вопрос еще остается - только потому что не были заданы COLLATION - поэтому происходила неправильная сортировка (перемешка латиницы и киррилицы) или могут быть другие причины?
Не были указанны - это не значит, что их не было. По умолчанию они тоже проставляются.
 

HraKK

Мудак
Команда форума
ппц долго смеятся над темой, и вот в 2 часа ночи сам запорол базу без бекапа 7 статей ))
Эх =) Пойду в круглосуточную аптеку за вазелином ^_~
 

Keron

Новичок
Подскажите, в phpmyadmin 2.7.0 не могу найти меню выбора правил сравнений, за запрос при создании таблицы
....character set cp1251 collate cp1251_bin .... показывает как ошибку
 

Фанат

oncle terrible
Команда форума
Какую ошибку?

-~{}~ 19.02.08 22:57:

И нафига тебе опять bin???
 
Сверху