SQL 整理订单

SQL Collate Ordering

根据https://msdn.microsoft.com/en-us/library/ms184391.aspx

以下 Select 根据排序规则对位置 table 进行不同排序,为什么西班牙排序规则将 'Chiapas' 作为最后一行?

CREATE TABLE Locations  
(Place varchar(15) NOT NULL);  
GO  
INSERT Locations(Place) VALUES ('Chiapas'),('Colima')  
                             , ('Cinco Rios'), ('California');  
GO  
--Apply an typical collation  
SELECT Place FROM Locations  
ORDER BY Place  
COLLATE Latin1_General_CS_AS_KS_WS ASC;  
GO  
-- Apply a Spanish collation  
SELECT Place FROM Locations  
ORDER BY Place  
COLLATE Traditional_Spanish_ci_ai ASC;  
GO  

第一次查询(标准排序规则):

Place
-------------
California
Chiapas
Cinco Rios
Colima

第二个查询(西班牙文排序规则):

Place
-------------
California
Cinco Rios
Colima
Chiapas

因为在西班牙语排序规则中 CH 在 C 之后。

请看一下整理表here