Как сделать чувствительную к регистру группу?
Если я выполню код ниже:
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
Ответы
Ответ 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