Jak posortować kolumnę VARCHAR na serwerze SQL zawierającą liczby?

Mam kolumnę VARCHAR w bazie danych, która może zawierać litery lub cyfry. Zależy to od konfiguracji aplikacji w interfejsie użytkownika.

Gdy zawiera cyfry, chcę, aby były sortowane numerycznie, np. jako „1”, „2”, „10” zamiast „1”, „10”, „2”. Pola zawierające tylko litery lub litery i cyfry (takie jak „A1”) można normalnie sortować alfabetycznie. Na przykład byłby to dopuszczalny porządek sortowania.

1
2
10
A
B
B1

Jaki jest najlepszy sposób na osiągnięcie tego?

2 odpowiedzi

za pomoc dziękuję!

Jednym z możliwych rozwiązań jest wypełnienie wartości liczbowych znakiem z przodu, aby wszystkie miały tę samą długość łańcucha.

Oto przykład wykorzystujący to podejście:

select MyColumn
from MyTable
order by 
    case IsNumeric(MyColumn) 
        when 1 then Replicate('0', 100 - Len(MyColumn)) + MyColumn
        else MyColumn
    end

100 należy zastąpić rzeczywistą długością tej kolumny.

Twoja odpowiedź

Zaloguj się aby odpowiedzieć.

Operiada

Operiada to polskojęzyczne forum informatyczne działające na zasadzie pytań i odpowiedzi.

Obserwowane tagi

Zaloguj się aby obserwować tagi.