[на редактирование] Запросы по текстовым полям
    , работа с чарсетами
  ![]()  | 
Наши проекты:
 Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту  | 
|
| ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS | 
| [216.73.216.5] | 
 
 | 
		
  | 
    информация о разделе
  ![]()  | Данный раздел не предназначается для обсуждения, здесь собираются только вопросы-ответы по тематике баз данных. Если есть желание обсудить какие-то вопросы, связанные с тематикой баз данных - перейдите в соответствующие разделы "Базы данных: общие вопросы" или "Базы данных: SQL". | 
    [на редактирование] Запросы по текстовым полям
    , работа с чарсетами
  | 
         
         
         
          
           Сообщ.
           #1
          
          , 
          
         
         
        
       | 
    |
| 
         | 
      
          Делаю запрос 
        
      ![]() ![]() SELECT ...,Name,... FROM table WHERE .... ORDER BY Name ASC Хотелось бы получить ряды отсортированные по возрастанию в алфавитном порядке. Но он мне какую-то чушь гонит. Сначала на "А", потом на "Г", потом на "В", потом опять на "А". Где нормально, где вообще в разнобой. Я тут подумал и понял - у него какая-то своя технология сортировки. Вообщем, я понял, что мне нужно: нужно сортировка, но по первому символу поля Name. Как это сделать? Что-то типа "ORDER BY Name[1] ASC". А то сейчас получается так, что пришлось мускульную сортировку забыть и сортироввать по CustomSort в списке, а у него скорость сортировки оставляет желать лучшего.  | 
    
| 
         
         
         
          
           Сообщ.
           #2
          
          , 
          
         
         
        
       | 
    |
| 
         | 
      
          А какой язык выбран для мускуля? В переменных сервака? На сколько я понимаю, сортировать ты хочешь русский текст. Сделать это правильно можно только, если использовать русскую локализацию. Я знаю, как это выбрать глобально для всего сервера (в конфиге мускуля должен быть путь language=...mysql/share/russian), а вот как его определить для одного запроса  
        
        Да и возможно ли это вообще?   | 
    
| 
         
         
         
          
           Сообщ.
           #3
          
          , 
          
         
         
        
       | 
    |
| 
         | 
      
          Кроме того, это зависит ещё и от кодировочки. Нормально сортирует он только в одной, а вот в какой... не помню. Могу посмотреть, но нужно время... Лучше вссего поэксперементировать! Как только получишь требуемый результат, значит правильно настроил язык и кодировку.  
        
      ЗЫ. Да и ещё. В случае вышеописанных "неправильных" настроек не верно выполняются и сами запросы, не только сортировка. Так что....     | 
    
| 
         
         
         
          
           Сообщ.
           #4
          
          , 
          
         
         
        
       | 
    |
| 
         | 
      
          Всем спасибо. 
        
      Проблема вылечилась добавлением ![]() ![]() character-sets-dir = C:/mysql/share/charsets  default-character-set = win1251 Выйграл где-то секунд 80 обработки! B) Кстати, можно добавить в FAQ.  | 
    
| 
         
         
         
          
           Сообщ.
           #5
          
          , 
          
         
         
        
       | 
    |
| 
         | 
      
          Для Unix: 
        
      Изменяем файл my.cnf прописываем: default-character-set = win1251 character-sets-dir=ччч, где вместо "ччч" указать пусть к папке мускула share/charsets, которая содержит кучу *.conf файлов А после модификаций рестартонуть апач...  |