Подтвердить что ты не робот

Как сделать чувствительную к регистру группу?

Если я выполню код ниже:

with temp as
(
  select 'Test' as name
  UNION ALL
  select 'TEST'
  UNION ALL
  select 'test'
  UNION ALL
  select 'tester'
  UNION ALL
  select 'tester'
)
SELECT name, COUNT(name)
FROM temp
group by name

Он возвращает результаты:

TEST   3
tester 2

Есть ли способ, чтобы группа была чувствительной к регистру, чтобы результаты были:

Test   1
TEST   1
test   1
tester 2
4b9b3361

Ответ 1

Вы можете использовать сортировку, чувствительную к регистру:

with temp as
(
  select 'Test' COLLATE Latin1_General_CS_AS as name
  UNION ALL
  select 'TEST'
  UNION ALL
  select 'test'
  UNION ALL
  select 'tester'
  UNION ALL
  select 'tester'
)
SELECT name, COUNT(name)
FROM temp
group by name

Ответ 2

Вам нужно указать текст как двоичный (или использовать сортировку с учетом регистра).

With temp as
(
  select 'Test' as name
  UNION ALL
  select 'TEST'
  UNION ALL
  select 'test'
  UNION ALL
  select 'tester'
  UNION ALL
  select 'tester'
)
Select Name, COUNT(name)
From temp
Group By Name, Cast(name As varbinary(100))

Использование сортировки:

Select Name Collate SQL_Latin1_General_CP1_CS_AS, COUNT(name)
From temp
Group By Name Collate SQL_Latin1_General_CP1_CS_AS