Trong SQL Server. Một bảng chứa một số văn bản với các trường hợp khác nhau. Tôi muốn sắp xếp chúng phân biệt chữ hoa chữ thường và nghĩ rằng một số COLLATE
trong số ORDER BY
sẽ làm điều đó. Nó không. Tại sao?ORDER BY ... COLLATE trong 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
Cả hai truy vấn trở lại giống nhau, ngay cả khi là người đầu tiên là "CS" cho case-sensitive
aaa1
AAB2
aba3
(trong trường hợp đầu tiên, tôi muốn AAB2, aaa1, aba3
)
Máy chủ của tôi là SQL Server Express 2008 (10.0.5500) và máy chủ mặc định của nó collation là Latin1_General_CI_AS
.
Việc đối chiếu cơ sở dữ liệu là Latin1_General_CI_AS
.
Kết quả vẫn giữ nguyên nếu tôi sử dụng SQL_Latin1_General_CP1_CS_AS
thay cho Latin1_General_CS_AS
.