2016-12-02 74 views
1

相应的查询我有以下查询这完全在PostgreSQL的:什么是Oracle数据库

Select 'Tom' as name 

输出:

name 
Tom 

应该是什么在Oracle中相应的查询?

如果我在Oracle中运行查询,它会给出错误,但在postgresql中成功运行。

+5

您需要从表格中进行选择。尝试'选择'Tom'作为双重名称。 – jarlh

+1

@jarlh感谢它的工作 – dhS

回答

3

如果没有from子句,Oracle不允许查询。对于这些类型的查询,甲骨文提供了一个名为dual系统表,有一列和一行:

SELECT 'Tom' as name FROM dual 
2

Oracle需要from子句。在这种情况下,你必须使用DUAL表格。

select 'Tom' as name from dual; 
2

甲骨文(据我所知)不寻常除其他RMDBSs,它强制执行,如果你选择的东西,你必须从表中选择它。

为此,有DUAL table。它是一个特殊的,一行,一列的表格,允许你在SQL中选择常量,函数等,而不必编写PL/SQL过程。

我说“特殊”,因为从10g开始,优化程序认识到它与其他表不同,因此可以在生成执行路径时使用该信息以使其更有效,比使用“正常”一列,一行表。

+2

这里的Oracle行为实际上是ANSI SQL兼容的。根据SQL标准,FROM子句是必需的。 – jarlh

+0

@jarlh我对此并不完全确定;我认为我在某些时候阅读了它们,并且迎合了选择常量时不需要FROM子句的事实。但是,我无法找到在线标准的副本,我可以使用它来确认是否为真! – Boneist

+1

您可以在此处验证ISO/ANSI SQL语法合规性:http://developer.mimer.com/validator/parser200x/index.tml – jarlh