Pod SQL Server. Tabela zawiera trochę tekstu z różnymi przypadkami. Chcę posortować je pod kątem wielkości liter i pomyślałem, że zrobi to COLLATE
w ORDER BY
. Tak nie jest. Czemu?ORDER BY ... COLLATE w SQL Server
CREATE TABLE T1 (C1 VARCHAR(20))
INSERT INTO T1 (C1) VALUES ('aaa1'), ('AAB2'), ('aba3')
SELECT * FROM T1 ORDER BY C1 COLLATE Latin1_General_CS_AS
SELECT * FROM T1 ORDER BY C1 COLLATE Latin1_General_CI_AS
obu zapytań powrócić takie same, nawet jeśli pierwszy jest "CS" dla rozróżniana
aaa1
AAB2
aba3
(w pierwszym przypadku, chcę AAB2, aaa1, aba3
)
Mój serwer jest SQL Server Express 2008 (10.0.5500) i jego domyślne sortowanie na serwerze to Latin1_General_CI_AS
.
Zestawienie bazy danych to również Latin1_General_CI_AS
.
Wynik pozostaje taki sam, jeśli użyję SQL_Latin1_General_CP1_CS_AS
zamiast Latin1_General_CS_AS
.