Je ces valeurs: d1, d45, d79, d33, d100
Comment trier les données en valeurs alphanumériques
Je veux trier ces variables dans l'ordre croissant de ma table.
Quelle est la requête pour obtenir la sortie comme:
d1
d33
d45
d79
d100
Je ces valeurs: d1, d45, d79, d33, d100
Comment trier les données en valeurs alphanumériques
Je veux trier ces variables dans l'ordre croissant de ma table.
Quelle est la requête pour obtenir la sortie comme:
d1
d33
d45
d79
d100
Désolé, pas SQL réponse du tout. :) Pour la variante avec une lettre seulement ordre par longueur et alpha.
Ce que vous voulez est appelé un "tri naturel". Pour Microsoft SQL Server 2005, voir this question. Pour les autres langues, voir (par exemple) this other question.
Si vous pouvez garantir un modèle de/\ w \ d +/...
dans Postgres:
select foo from bar order by cast(substring(foo from 2) as int)
..et similaire existera pour d'autres saveurs SQL. Esprit cher.
modifier: solution androïdes semble bien aussi:
..order by char_length(foo),foo
Si on peut supposer que les valeurs de données ne contiennent que la lettre d et une valeur numérique, vous pouvez également utiliser:
select column from YourTable
order by convert(int, replace(column, 'd', ''))
S'il contient d'autres lettres, alors cette méthode devient rapidement inutilisable:
select column from YourTable
order by convert(int,
replace(replace(replace(replace(replace(
column, 'a', ''),
'b', ''),
'c', ''),
'd', ''),
'e', '')
)
Quelle base de données? MySQL, sql-server, oracle, ...? – Greg