SQL Server 2008 - ordre par chaînes avec numéro numériquement
J'ai valeurs suivantes dans ma table:
ABC
ABC1
ABC2
ABC3 and so on...
ABC11
ABC12
ABC13 and so on..
ABC20
ABC21
ABC22 and so on..
Donc, fondamentalement, ce que j'ai, c'est toute la chaîne de valeur (pas toujours ABC, toute la chaîne de valeur), qui peut être suivie par le nombre ou il peut juste être une chaîne de caractères sans le nombre.
Quand je fais select * from table order by ma colonne, asc-je obtenir les résultats suivants:
ABC
ABC1
ABC11
ABC12
ABC13
ABC2
ABC20
ABC21
ABC22
ABC3
ABC31
ABC32
J'en ai besoin par ordre numérique:
ABC
ABC1
ABC2
ABC3
ABC11
ABC12
ABC13
ABC20
ABC21
ABC22
ABC31
ABC32
Comment cela peut-il être réalisé?
source d'informationauteur user2179092
Vous devez vous connecter pour publier un commentaire.
Vous pouvez le faire en utilisant PATINDEX fonction() comme ci-dessous :
SQL Violon Démo
Si vous avez des numéros dans le milieu de la corde alors vous avez besoin pour créer de petites fonctions définies par l'utilisateur pour obtenir le numéro de la chaîne et de trier les données en fonction sur ce nombre comme ci-dessous :
Vous pouvez trier les données par :
Vous pouvez supprimer les trois premiers caractères et jeté le reste de
int
Démo
Vous pourriez adapter la fonction RemoveNonAlphaCharacters dans cette réponse pour filtrer tout, sauf des numéros, et ensuite utiliser un
ORDER BY
à l'aide de cette fonction.De l'ordre dans leur déclaration, ajouter assez de zéros lorsque la valeur contient un nombre quelconque de faire tous les alphanumerica valeur même longueur