2009-08-28 7 views
3

j'ai une colonne dans ma table qui stocke une chaîne (il est une colonne de texte):sortes mySQL soulignent la dernière

varchar (16) latin1_swedish_ci

Le problème est, quand je dis « ORDER BY nom ASC "renvoie les mots commençant par un trait de soulignement à la fin. Ceci est un exemple, il est retourné:

-a 
-mmddd2 
-z 
-z3 
aaa 
b 
c 
t 
_a 
___- 

Je parie que je peux utiliser php pour trier, mais est-il un moyen facile de faire mySQL mettre les underscores après les tirets? Je fais cela afin qu'il corresponde à la sortie de la fonction de tri javascript.

Je suis en train de faire:

-a 
-mmddd2 
-z 
-z3 
_a 
___- 
aaa 
b 
c 
t 

Répondre

5

Collations définir l'ordre de tri, si aucun des classements sont disponibles utiliser l'ordre de tri dont vous avez besoin, vous pouvez définir vos propres, comme expliqué here.

+0

Le lien ne fonctionne plus. –

+0

Merci, @MikeFlynn. Correction des liens. –

1

Je ne dis pas cela est une solution élégante, mais vous pouvez essayer de faire quelque chose comme ceci:

select name 
from customers 
order by replace(name, '_', '-+') asc; 

+, remplacez les avec tout ce qui peut mettre les valeurs préfixées après underscore le tableau de bord.

+3

Notez qu'une clause ORDER BY qui utilise un calcul ruinera le bénéfice des index sur ses champs. – ceejayoz

Questions connexes