2010-02-03 2 views
1

Я использую oracle 10. Мне нужно отсортировать набор результатов в соответствии с двумя полями числовой строки. один своего рода поле критерий содержит данные, как это: FIELD1:sql order by numeric string

FO-100001001001 
FO-100001002001 
FO-100001003001 
SQ-200001003001 
FC-102001003001 

другой:

FIELD2: 
000203 
000567 
349990 

Мне нужно объединить два критерия, первый критерий взять приоритет, результат нужен восходящий заказ.

Как написать этот sql?

ответ

6

Поскольку числа нули, вы можете просто сравнить их как строки:

SELECT ... 
FROM ... 
ORDER BY field1 ASC, field2 ASC 

Или, если вы хотите игнорировать префикс в field1:

SELECT ..., SUBSTR(field1, 3) AS stripped_field1 
FROM ... 
ORDER BY stripped_field1 ASC, field2 ASC 
0

Я предполагаю, что «numeric string», вы имеете в виду «varchar», и эта альфа-цифровая сортировка работает для вас (что необходимо, если формат фиксирован и у вас есть ведущие нули).

select * from table order by field1, field2;