Domyślnie SQL porządkuje liczby przed znakami.ORDER BY varchar z [a-9] zamiast [0-Z] w SQL
Więc jeśli mam kolumny "name":
abc
ab1
a1b
1ba
1bac
b21
Od rodzaju SQL przez 0-Z (pierwszy od 0 do 9, a następnie AZ), zapytanie
SELECT * FROM ... ORDER BY name
spowoduje :
1ba
1bac
a1b
ab1
abc
abc1
b21
Ale chcę, aby posortować według a-0 (pierwszy AZ, następnie 0-9).
abc
abc1
ab1
a1b
b21
1ba
1bac
Jak zrobić to w zapytaniu? Dokładniej, jak mam to zrobić w SQLite?
Znalazłem jedno rozwiązanie w Sort MySQL results alphabetically, but with numbers last, ale tylko dla pierwszego znaku.
Czy Twoje wartości mają zawsze 3 znaki? – gbn
Można [użyć interfejsu C do utworzenia funkcji] (http://www.sqlite.org/c3ref/create_function.html), który używa ['regexp'] (http://sqlite.org/lang_expr.html) operator, aby wyrzucić litery i cyfry w oddzielnych kolumnach. –
@ gbn Nie, mogą bardzo długo. Prawdopodobnie powinienem to pokazać :) – Nic