2010-04-19 4 views
0

Je suis en cours d'exécution d'une sélection qui renvoie des résultats alphanumériques, par exemple:php tri ordre naturel de sélectionner des lignes de MySQL

ABC-1 
ABC-2 
ABC-10 
SAM-1 
SAM-2 
SAM-10 
SAM-20 

J'ai essayé d'utiliser:

ORDER BY CAST(mid(field_name, 6, LENGTH(class) -5) AS unsigned) 

et

ORDER BY filed_name + 0 ASC 

cela a aidé à mettre de l'ordre mais je ne peux pas sembler commander -2 avant -10

merci beaucoup

Répondre

1

Que diriez-vous

ORDER BY 
    LEFT(field_name, INSTR(field_name, '-') - 1), 
    CAST(
    SUBSTRING(field_name, INSTR(field_name, '-') + 1) AS INTEGER 
) 
+0

obtenir une erreur pour cette –

+0

@Digital Craft Studios: Et ce serait ... quelle erreur, exactement? – Tomalak

+0

Ligne: 130 Erreur: Vous avez une erreur dans votre syntaxe SQL; consultez le manuel qui correspond à votre version du serveur MySQL pour la bonne syntaxe à utiliser près de 'CAST (DROITE ('class', LENGTH (' class') - INSTR ('class',' - ')) AS INTEGER' à la ligne 4 –

Questions connexes