2010-07-02 4 views
1

Я хочу выполнить специальный запрос в таблице в моей базе данных оракула.Oracle 10g-Express Query

Я хочу, чтобы результат сортировался в соответствии с перечислением, которое у меня есть.

перечисление идет следующим образом:

private enum days 
{ 
    Saturday = 1, 
    Sunday, 
    Monday, 
    Tuesday, 
    Wednesday, 
    Thursday, 
} 

Я хочу, чтобы результат будет отсортирован в соответствии с этим перечислением.

ответ

0

Это больше похоже на вопрос SQL; Следующие ссылки могут быть полезны:

http://www.techonthenet.com/oracle/functions/to_date.php

метод грубой силы, чтобы использовать случай заявление, в вашем SQL; эквивалента в свой фрагмент кода:

SELECT CASE WHEN field1 = 'Saturday' then 1 
      WHEN field1 = 'Sunday' then 2 
      WHEN field1 = 'Monday' then 3 
      ... 
      END as dateval, 
     field1 as datedisplay 
    FROM table1 
ORDER BY 1; 

Функция DECODE SQL также работает хорошо, но мне нравится CASE, потому что легче читать и избежать опечаток или ошибок.

Если у вас есть дополнительная информация из ваших значений даты, я предлагаю сохранить ваши значения даты в ваших полях базы данных как тип данных DATE. Если вам нужно узнать день недели, используя приведенную выше ссылку, вы можете просто указать свое значение даты в виде символьной строки, соответствующей правильному значению дня недели.

для теста:

SELECT to_char(SYSDATE, 'DAY') as day_of_week 
    FROM dual; 

выходы:

WEDNESDAY 
(or whatever day of the week is local to your system) 

Имейте в виду, что все возвращается из функции to_char чувствителен к регистру. Это должно работать на всех выпусках Oracle, включая Oracle-XE.