• Курсы Академии Кодебай, стартующие в мае - июне, от команды The Codeby

    1. Цифровая криминалистика и реагирование на инциденты
    2. ОС Linux (DFIR) Старт: 16 мая
    3. Анализ фишинговых атак Старт: 16 мая Устройства для тестирования на проникновение Старт: 16 мая

    Скидки до 10%

    Полный список ближайших курсов ...

Сортировка глючит

  • Автор темы Chetverg
  • Дата начала
Статус
Закрыто для дальнейших ответов.
C

Chetverg

Такая беда:
SELECT * FROM Akter ORDER BY name
такой вот простой запрос... сортировать-то он сотирует, но как-то странно:
Г....
В....
Г....
А...
Б...
Б...
Б...
Б...
В...
А...
В...
А...
А...
А...
А...
А...
В...
ну и так далее... логики никакой...
:huh:
Кто знает чё за дела?
СУБД: MySQL
Таблица: CREATE TABLE Akter (kod_akter INTEGER PRIMARY KEY, name CHAR(50));

Спасибо
 
?

????

Chetverg
Проверь настройки локали (если они есть на MSSQL Server'е). Может сервак настроен на "нерусский" язык, поэтому так и сортирует.

З.Ы. Проверить не могу.
 
B

Barmutik

Если есть возможность, то запустите mysqld с опцией: --default-character-set=cp1251" , если нет, то попробуйте послать MySQL такой запрос: SET CHARACTER SET cp1251_koi8 - это изменит набор символов для текущего соединения. SET CHARACTER SET DEFAULT - установит обычную таблицу символов.

Имейте ввиду, что эта настройка действует только для текущего соединения. Более подробно в RTFM.

Для правильной работы ORDER BY и GROUP BY сервер MySQL должен знать текущий набор символов. К сожалению, версии 3.х и 4.х MySQL могут иметь только _один_ charset на все базы одновременно. Задается в /etc/my.cnf:

[mysqld]
default-character-set=koi8_ru

Проверить можно так:

mysql> show variables like 'character_sets' ;
mysql> show variables like 'character_set' ;

В этом случае все символьные поля _во_всех_ таблицах будут храниться в KOI8-R. Для того, чтобы работали клиенты ODBC из под Windows необходимо, чтобы первым SQL оператором в Windows-приложении была команда:

SET CHARACTER SET cp1251_koi8 ;

Тогда включится перекодировка "на лету". На сервере будет KOI8-R, а на клиенте Windows-1251 и все сортировки будут работать. Эту же команду можно прописать в MyODBC 3.5х "SQL command on connect" (STMT=), она выполнится автоматически.

Другой вариант -- не использовать KOI8-R, а хранить базы в Windows-1251 и сообщить об этом серверу, прописав в /etc/my.cnf:

[mysqld]
default-character-set=cp1251

Удачи!
 
Статус
Закрыто для дальнейших ответов.
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!