Oracle データベースのテーブルに対して特別なクエリを実行したいと考えています。
私が持っている列挙型に従って結果をソートしたい。
列挙型は次のようになります。
private enum days
{
Saturday = 1,
Sunday,
Monday,
Tuesday,
Wednesday,
Thursday,
}
この列挙型に従って結果をソートしたい。
SQL
これは質問のように聞こえます。次のリファレンスが役立つ場合があります。
http://www.techonthenet.com/oracle/functions/to_date.php
強引な方法は、SQL で case ステートメントを使用することです。コードのスニペットに相当するものは次のとおりです。
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-XE を含むすべてのエディションの Oracle で動作するはずです。