Это зависит от типа столбца.
Если это тип чисел c, их значения сравниваются:
with your_table as (
select stack(2, 7423.00, 9.60) as TAUX_REMU_RESEAU
)
select * from your_table order by TAUX_REMU_RESEAU desc;
Результат:
your_table.taux_remu_reseau
7423
9.6
Если это строка:
with your_table as (
select stack(2, '7423.00', '9.60') as TAUX_REMU_RESEAU
)
select * from your_table order by TAUX_REMU_RESEAU desc;
Результат:
your_table.taux_remu_reseau
9.60
7423.00
Строки сравниваются лексикографически:
Это определение лексикографии c упорядочения.
Если две строки различны, то либо они имеют разные символы в некотором индексе, который является допустимым индексом для обеих строк, либо их длины различны, либо в обоих случаях. Если они имеют разные символы в одной или нескольких позициях индекса, пусть k будет наименьшим таким индексом; затем строка, символ которой в позиции k имеет меньшее значение, как определено с помощью оператора <, лексикографически предшествует другой строке. В этом случае <code>compareTo возвращает разницу двух символьных значений в позиции k
в двух строках, то есть значение: this.charAt(k)-anotherString.charAt(k)
Если нет позиции индекса, в которой они отличаются затем более короткая строка лексикографически предшествует более длинной строке. В этом случае compareTo
возвращает разницу длин строк, то есть значение: this.length()-anotherString.length()
См. Исходный код String.compareTo для лучшего понимания: * Метод 1034 *
public int compareTo(String anotherString) {
int len1 = value.length;
int len2 = anotherString.value.length;
int lim = Math.min(len1, len2);
char v1[] = value;
char v2[] = anotherString.value;
int k = 0;
while (k < lim) {
char c1 = v1[k];
char c2 = v2[k];
if (c1 != c2) {
return c1 - c2;
}
k++;
}
return len1 - len2;
}
compareTo
возвращается после сравнения символов в позиции 0 (k = 0): 7 и 9.