2016-09-08 28 views
4

我怎麼能看到SQL服務器 - 整理 - Latin1_General_CI_AS和Latin1_General_CS_AS

SELECT * 
FROM (VALUES ('A'),('B'),('Y'),('Z'), ('a'),('b'),('y'),('z')) V(C) 
ORDER BY C COLLATE Latin1_General_CS_AS 

SELECT * 
FROM (VALUES ('A'),('B'),('Y'),('Z'), ('a'),('b'),('y'),('z')) V(C) 
ORDER BY C COLLATE Latin1_General_CI_AS 

之間的差異之間的差異?對於這組字符,沒有區別。

乾杯 的Bartosz

回答

1

通過由C.

SELECT * 
FROM (VALUES (1,'a'),(2,'b'),(3,'y'),(4,'z'),(5,'A'),(6,'B'),(7,'Y'),(8,'Z'),(9,'a'),(10,'b'),(11,'y'),(12,'z')) V(ID,C) 
ORDER BY C COLLATE Latin1_General_CS_AS,ID 

SELECT * 
FROM (VALUES (1,'a'),(2,'b'),(3,'y'),(4,'z'),(5,'A'),(6,'B'),(7,'Y'),(8,'Z'),(9,'a'),(10,'b'),(11,'y'),(12,'z')) V(ID,C) 
ORDER BY C COLLATE Latin1_General_CI_AS,ID 

訂貨對於第一個表,它是殼體sesitive後添加的整數ID列到您的組值,和順序,「一個'<>'A',所以他們被分開處理。我們的排序將小寫的第一,然後他們的訂單通過ID(1,9),然後用大寫字母A.

ID C 
1 a 
9 a 
5 A 

在第二表中,「A」 =「A」如下,因此它們被視爲在同一組中,和3(或A)的值上的ID號碼

ID C 
1 a 
5 A 
9 a 

一起訂購而這種模式繼續對於b,y和z。

+0

謝謝。如果它是二進制排序,那麼我會有ABCabc。如果我想擁有AaBaCa,應該使用什麼排序規則? –

+0

如果使用'ORDER BY C COLLATE Latin1_General_CI_AS,C COLLATE Latin1_General_CS_AS desc',它將按照順序將每個字母組排序,而不區分大小寫,然後按大小寫進行排序,但首先大寫('desc')。 – BeanFrog

+0

謝謝BeanFrog –