Заставить T-SQL-запрос быть чувствительным к регистру в MS - PullRequest
16 голосов
/ 05 октября 2010

У меня есть таблица, которая возникла в старой унаследованной системе с учетом регистра, в частности столбец состояния, где 's' = 'Импорт по расписанию' и 'S' = 'Управление расписанием'.Эта таблица в конечном итоге попадает в базу данных SQL Server 2000, к которой я могу обратиться.Мой запрос относительно прост, просто для подсчета ...

Select trans_type, count(1) from mytable group by trans_type

Это группировка подсчетов для 'S' вместе с подсчетами 's'.Есть ли способ заставить запрос быть чувствительным к заглавным буквам?У меня есть доступ к средам SQL Server 2000 и 2005, чтобы выполнить это, но у меня ограниченные возможности администратора на сервере (поэтому я не могу установить атрибуты сервера) ... Я думаю, я мог бы переместить данные на локальный компьютер и настроить что-то намой местный, где у меня есть полный доступ к параметрам сервера, но я бы предпочел решение tsql.

Ответы [ 2 ]

27 голосов
/ 05 октября 2010
select trans_type collate SQL_Latin1_General_CP1_CS_AS, count(*)
from mytable
group by trans_type collate SQL_Latin1_General_CP1_CS_AS

Вы можете сделать это также с =, like и другими операторами. Обратите внимание, что вы должны изменить список выбора, потому что вы больше не группируете по trans_type, теперь вы группируете по trans_type collate SQL_Latin1_General_CP1_CS_AS. Вид гоча.

1 голос
/ 05 октября 2010

Можете ли вы ввести столбец trans_type_ascii со значением ascii для trans_type и сгруппировать его вместо этого? Или любой другой столбец, который вы можете использовать (isUpperCase), чтобы различать их.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...