2012-12-11 16 views
7

SQL Server altında. Bir tablo farklı durumlarda bazı metinler içerir. Bunları büyük/küçük harfe duyarlı hale getirmek istiyorum ve ORDER BY numaralı telefondan bir COLLATE'un bunu yapacağını düşündüm. Olmaz. Niye ya? SİPARİŞ BY ... SQL Server'da COLLATE

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 

Her iki sorgular

birincisi durumda duyarlı

aaa1 
AAB2 
aba3 

(ilk durumda, ben AAB2, aaa1, aba3 istiyorum)

Benim sunucusu için "CS" olsa bile, aynı return SQL Server Express 2008 (10.0.5500) ve varsayılan sunucu harmanlaması Latin1_General_CI_AS'dur.

Veritabanının karşılaştırması Latin1_General_CI_AS'dır.

Latin1_General_CS_AS yerine SQL_Latin1_General_CP1_CS_AS kullanırsanız sonuç aynı kalır.

cevap

8

a-z önce sıralanmış A-Z ile istediğiniz sıralama düzeni için ikili bir harmanlamasına ihtiyacınız vardır. O doğru harf duyarlı harmanlama sıralama düzeni olduğu için

SELECT * FROM T1 ORDER BY C1 COLLATE Latin1_General_bin 

CS harmanlama aAbB ... zZ