powered by simpleCommunicator - 2.0.58     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Оператор LIKE
9 сообщений из 9, страница 1 из 1
Оператор LIKE
    #32290557
Stas Tristan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Имеется таблица MyIsaam
В ней есть несколько полей Char (255)
Все поля заполнены русским и кое-где английским текстом.
Почему-то преждложение Where [field_name] like 'Б%' (или любой другой символ) некорректно обрабатывается - выдается куча записей вовсе на Б не начинающихся.
Когда ищу like 'j%' - да, все, что на j начинается выдает, но кроме него проскальзывают русскоязычные значения этого поля, то бишь он мусор пропускает.
Где грабли?
...
Рейтинг: 0 / 0
Оператор LIKE
    #32290578
alex_24
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А грабли в том, что у тебя база использует не русскую кодировку для сравнения.
Твой дистрибутив может быть скомпилин без русской кодировки.
В этом случае тебе нужно или перекомпилить его с русским charset.
Код: plaintext
1.
2.
В этом случае необходимо перекомпилировать клиент с  --with-charset=xxx 
 
или с --with-extra-charsets=xxx

Или установить дистрибут с русской кодировкой. У меня помоему откомпилин к потдержкой многих кодировок.
Код: plaintext
1.
2.
Весь стандартный бинарный код MySQL откомпилирован с  --with-extra-
 
character-sets=complex, что обеспечивает поддержку всех многобайтовых кодировок

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
Кодировка является простой кодировкой, не скомпилированной в mysqld,
 и файлы определения кодировки находятся не там, где рассчитывает их найти
клиент. В этом случае необходимо: 
Перекомпилировать клиент с поддержкой этой кодировки (see section  2 . 3 . 3  
Типичные опции configure). 
Указать клиенту, где расположены файлы определения кодировки. Для многих клиентов 
это можно сделать с помощью опции  --character-sets-dir=path-to-charset-dir. 
 
Скопировать файлы определения кодировки туда, где, по мнению клиента, они
 должны находиться. 


Можно выставить в конфигурационном файле кодировку поумолчанию.
Или выставить нужнут при запуске сервера:
Код: plaintext
1.
2.
3.
4.
5.
6.
При запуске сервера можно изменить набор символов при помощи 
параметра  --default-character-set. Выбрать доступные наборы символов можно 
 
при помощи параметров  --with-charset=charset и --with-extra-charsets= 
 
список-кодировок | complex | all, и файлов наборов символов, перечисленных
 в SHAREDIR/charsets/Index. 


Вообще - захиди ко мне на форум.
http://forum.webcommand.ru
...
Рейтинг: 0 / 0
Оператор LIKE
    #32290583
alex_24
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
При смене набора символов во время работы MySQL (что может одновременно изменить и порядок сортировки) необходимо запустить команду
Код: plaintext
myisamchk -r -q --set-character-set=charset 
для всех таблиц. В противном случае индексы могут быть созданы в неправильном порядке.

При подключении клиента к серверу MySQL сервер отправляет ему используемый по умолчанию набор символов. На время соединения клиент переключается на использование этого набора.

Для экранирования строк в SQL-запросе необходимо пользоваться функцией mysql_real_escape_string(). mysql_real_escape_string() идентична старой функции mysql_escape_string() - во всем, кроме одного: в качестве первого параметра она принимает дескриптор соединения MYSQL.

Если клиент был скомпилирован с набором путей, в которых не было пути установки сервера, а настраивавший MySQL пользователь на включил в исполняемый файл системы все наборы символов, клиенту необходимо сообщить о местонахождении дополнительных наборов символов, которые нужны ему для общения с сервером.

Сделать это можно путем внесения в файл настроек MySQL следующей строки:

Код: plaintext
1.
[client]
character-sets-dir=/usr/local/mysql/share/mysql/charsets


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

Заставить клиента использовать определенный набор символов можно следующим образом:

Код: plaintext
1.
[client]
default-character-set=character-set-name


но обычно этого не требуется.


Вообще - захиди ко мне на форум.
http://forum.webcommand.ru
...
Рейтинг: 0 / 0
Оператор LIKE
    #32290690
Stas Tristan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дело в том, что у меня MySQL под Windows (4.0.13)
Перекомпилить его у меня не хватает квалификации.
Есть прога MySQLADMIN - в ней можно править .ini файл.
Что мне туда добавить?
Сейчас там всего-навсего следующее:
[WinMySQLAdmin]
Server=C:/mysql/bin/mysqld-nt.exe
...
Рейтинг: 0 / 0
Оператор LIKE
    #32290697
alex_24
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Существует два файла опций с одинаковыми функциями: `my.cnf' и `my.ini'. Однако во избежание недоразумений лучше всего использовать только один из них. Оба файла представляют собой простой текст. Если вы собираетесь использовать файл `my.cnf', то его следует создать в корневом каталоге диска C, если `my.ini' - то в системном каталоге Windows (это обычно что-либо вроде `C:\WINDOWS' или `C:\WINNT'; его точное местоположение можно определить по значению переменной окружения windir). MySQL сначала ищет файл `my.ini', а затем `my.cnf'.

Я бы правил `my.cnf' файл, покрайней мере у себя на компе я поступаю именно так.
Добавить нужно, как я уже писал, следующее:
[client]
default-character-set=character-set-name

name - название кодировки.
Я позже выложу пример моего cnfм файла.
Я сейчас просто на роботе.
...
Рейтинг: 0 / 0
Оператор LIKE
    #32290775
BigHarryy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В файле my.cnf:
[mysqld]
default-character-set=win-1251
...
Рейтинг: 0 / 0
Оператор LIKE
    #32290779
Фотография Хрен
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2alex_34:
Только не в [client].

Запросы и индексация выполняется на сервере. поэтому default-character-set должен быть в серверной части конфига
...
Рейтинг: 0 / 0
Оператор LIKE
    #32290786
Stas Tristan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Примерчик бы не помешал
...
Рейтинг: 0 / 0
Оператор LIKE
    #32290833
BigHarryy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Дык примерчик-то уже был опубликован на два сообчения выше...
В конфиге секция [mysqld] отвечает за настройки сервера (сервиса, демона), секция [client] - туда заглядывает консольный клиент mysql.exe
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Оператор LIKE
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]