Oracle 10g-Express Query - PullRequest
       2

Oracle 10g-Express Query

1 голос
/ 03 июля 2010

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

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

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

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

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

1 Ответ

0 голосов
/ 06 декабря 2012

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

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

Метод грубой силы заключается в использовании оператора case в вашем 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;

Функция SQL DECODE также работает, но мне нравится 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.

...