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。
根据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。