2010-07-02 128 views
1

我想對我的oracle數據庫中的表執行特殊查詢。Oracle 10g-Express查詢

我想結果根據我有一個枚舉排序。

枚舉去如下:

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

我想要的結果根據此枚舉進行排序。

回答

0

這聽起來更像是SQL問題;以下參考可能會有所幫助:

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

蠻力的方法是在你的SQL使用情況說明;在equivallent到您的代碼片斷是:

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。