2016-09-08 6 views
4

の違いはどのように私はSQL Serverの - 照合 - 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 

の違いを見ることができますか?。この文字セットには違いはありません。

乾杯 バルトシュ

答えて

1

「はケースsesitiveで最初のテーブルについては、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 

により注文後ということで、あなたの値のセット、および順に整数のID列を追加します。 '<>' A 'なので、別々に扱われます。我々の順序付けプットは、最初に小文字、次にIDによってそれらを順序付け(1,9)、及び第2のテーブルにおいて大文字Aと

ID C 
1 a 
9 a 
5 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 –

関連する問題