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.