COMMANDE PAR ... l'assemblage dans SQL Server
Sous SQL Server. Une table contient du texte avec des cas différents. Je veux les trier sensible à la casse et de la pensée qu'un COLLATE
dans le ORDER BY
le ferait. Il n'a pas. Pourquoi?
CREATE TABLE T1 (C1 VARCHAR(20))
INSERT INTO T1 (C1) VALUES ('aaa1'), ('AAB2'), ('aba3')
SELECT * FROM T1 ORDER BY C1 COLLATE Latin1_General_CS_AS
SELECT * FROM T1 ORDER BY C1 COLLATE Latin1_General_CI_AS
Les deux requêtes de retour, même si le premier est "CS" pour la casse
aaa1
AAB2
aba3
(dans le premier cas, je veux AAB2, aaa1, aba3
)
Mon serveur est un Serveur SQL server Express 2008 (10.0.5500) et son classement du serveur par défaut est Latin1_General_CI_AS
.
Le classement de la base de données est Latin1_General_CI_AS
trop.
Le résultat reste le même, si j'utilise SQL_Latin1_General_CP1_CS_AS
en place de Latin1_General_CS_AS
.
OriginalL'auteur Olivier Faucheux | 2012-12-11
Vous devez vous connecter pour publier un commentaire.
Parce que est le bon classement sensible à la casse ordre de tri. Il est expliqué dans Classement Sensible À La Casse Ordre De Tri pourquoi c'est le cas, il a à voir avec la Unicode spécifications pour le tri.
aa
va trier avant deAA
maisAA
va trier avant deab
.OriginalL'auteur Remus Rusanu
Vous avez besoin d'un classement binaire pour votre ordre de tri désiré avec
A-Z
triés avant d'a-z
.Le CS classement sortes
aAbB ... zZ
OriginalL'auteur Martin Smith