Eindletter verwijderen van nummer en bestellen

Ik heb een kolom in een tabel met stoelnummers die er als volgt uitzien: 10D, 4E, 12A..etc Ik probeer de eindletters te verwijderen en ze in oplopende volgorde te bestellen. Mijn code hieronder neemt de eindletter weg, maar deze is niet correct. Het beveelt hen als volgt: 10 12 13 3 4 7 8

    select distinct rtrim(col_name(col_name, 1, LENGTH(col_name) - 1)) as "Row" from table
    order by rtrim(substr(col_name, 1, LENGTH(col_name) - 1));
2
Welke RDBMS gebruikt u?
toegevoegd de auteur Martin Smith, de bron

1 antwoord

U moet naar een numeriek type casten om numerieke ordening te krijgen. Bijvoorbeeld

order by cast(rtrim(substr(col_name, 1, LENGTH(col_name) - 1)) as int);

Assuming your RDBMS supports cast to int. If MySQL you could use UNSIGNED in place of int

4
toegevoegd
+1: * Omdat u anders alfanumeriek bestelt op stringtype.
toegevoegd de auteur MatBailie, de bron