我如何看待
之间的区别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
答案 0 :(得分:1)
将一个整数ID列添加到您的值集中,并按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
对于第一个表格,即案例敏感,“a”<> '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。