Модераторы: skyboy
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> DISTINCT или ORDER BY с учетом регистра 
:(
    Опции темы
GrafF812
Дата 28.3.2011, 16:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 205
Регистрация: 3.12.2009

Репутация: нет
Всего: нет



Здравствуйте. У меня следующая проблема. Есть такая таблица
Код

кассир
бригадир
кассир 5
Кассир 5
бригадир

Мне нужно получить такую выборку:
Код

бригадир
касср
кассир 5
Кассир 5

Однако при использовании такого запроса:
Код

SELECT DISTINCT name FROM person ORDER BY name

я получаю следующее:
Код

бригадир
кассир
Кассир 5

Т.е "Кассир 5" и "кассир 5" от слил в одно, а мне нужно учитывать регистр. Есть ли какие-нибудь способы?
PM MAIL   Вверх
Akina
Дата 28.3.2011, 17:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 106
Всего: 454



Используй binary collation


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
skyboy
Дата 28.3.2011, 18:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: 41
Всего: 260



не проверил, но думаю, что convert() справится.
Код

SELECT DISTINCT convert(name using utf8_bin)
FROM person 
ORDER BY name


Добавлено через 30 секунд
собственно, это иллюстрация к уже сказанному Akina:
Цитата(Akina @  28.3.2011,  16:01 Найти цитируемый пост)
Используй binary collation 


PM MAIL   Вверх
GrafF812
Дата 29.3.2011, 09:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 205
Регистрация: 3.12.2009

Репутация: нет
Всего: нет



skyboy, Спасибо. мне подошло:
Код

SELECT DISTINCT convert( name, BINARY )
FROM person
ORDER BY name


Цитата(skyboy @  28.3.2011,  18:16 Найти цитируемый пост)
обственно, это иллюстрация к уже сказанному Akina:

В этом случае придется менять структуру самой таблицы, а это не желательно.
PM MAIL   Вверх
skyboy
Дата 29.3.2011, 14:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: 41
Всего: 260



Цитата(GrafF812 @  29.3.2011,  08:35 Найти цитируемый пост)
В этом случае придется менять структуру самой таблицы

не понял.
вот ты говоришь "подошло".
Цитата(GrafF812 @  29.3.2011,  08:35 Найти цитируемый пост)
convert( name, BINARY )

это даже круче, чем 
Цитата(Akina @  28.3.2011,  16:01 Найти цитируемый пост)
Используй binary collation 

это charset меняешь.

PM MAIL   Вверх
comcon1
Дата 30.3.2011, 00:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 838
Регистрация: 11.6.2005
Где: Москва ДАС-МГУ

Репутация: нет
Всего: 17



я вот почему-то подумал, а так не будет быстрее?
Код

SELECT name FROM table GROUP BY hash_function(name) ORDER BY name



--------------------
PM MAIL   Вверх
Akina
Дата 30.3.2011, 07:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 106
Всего: 454



Цитата(comcon1 @  30.3.2011,  01:54 Найти цитируемый пост)
а так не будет быстрее?

Конечно нет. Функция в выражении группировки - filesearch без вариантов.


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
Gwire
Дата 13.4.2011, 23:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 216
Регистрация: 7.8.2007
Где: Николаев

Репутация: 1
Всего: 4



А можно еще так
Код

SELECT DISTINCT Lower( name ) FROM person ORDER BY name
/* или */
SELECT name FROM person GROUP BY Lower( name ) ORDER BY name



Это сообщение отредактировал(а) Gwire - 13.4.2011, 23:48
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | MySQL | Следующая тема »


 




[ Время генерации скрипта: 0.0866 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.