【问题标题】:Oracle 10g-Express QueryOracle 10g-Express 查询
【发布时间】:2011-03-11 07:27:09
【问题描述】:

我想对我的 oracle 数据库中的表执行特殊查询。

我希望根据我拥有的枚举对结果进行排序。

枚举如下:

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

我希望根据这个枚举对结果进行排序。

【问题讨论】:

    标签: c# wpf oracle-xe


    【解决方案1】:

    这听起来更像是一个SQL 的问题;以下参考资料可能会有所帮助:

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

    蛮力方法是在你的 SQL 中使用 case 语句;与您的 sn-p 代码等效的是:

    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。

    【讨论】:

      猜你喜欢
      • 2013-10-31
      • 1970-01-01
      • 2011-07-14
      • 2013-03-01
      • 1970-01-01
      • 2018-05-22
      • 2011-07-21
      • 1970-01-01
      相关资源
      最近更新 更多