双表类型格式为varchar2(1)
,那么如何支持日期功能呢。
EX:
SELECT EXTRACT(MONTH FROM SYSDATE) FROM DUAL;
答案 0 :(得分:2)
DUAL
表只有一列 - dummy varchar2(1)
和一行,其值为'X'
。
所以,如果你查询
select dummy from dual
为您提供
| DUMMY |
|-------|
| X |
在查询SELECT EXTRACT(MONTH FROM SYSDATE) FROM DUAL;
中,双表只是作为锚表运行查询以获取单行,因为Oracle尚未提供普通的select子句(select 'yourname' as name;
)可在SQL Server和许多其他数据库中使用。
您应该知道,无论表中列的数量和类型如何,您始终可以运行查询,从中选择函数/字符串/数字等,包括或排除这些列。
例如:如果您的架构中有EMPLOYEE
表,则您知道此查询完全有效,尽管select
列表中没有其他列。
在dual
上运行此查询的唯一区别是,它将返回从函数(EXTRACT(MONTH FROM SYSDATE)
)返回的值,而不是1行,显示EMPLOYEES
中包含的行数。 1}}表。除非您实际查询员工表,否则您会发现这对您没用。
SELECT EXTRACT(MONTH FROM SYSDATE) as mon FROM EMPLOYEES;
MON
--
4
4
4
4
4
4
..
..
因此,您需要一个标准表,它始终返回一行和一列或多列,这在Oracle中DUAL
的情况下暂时存在。