在这个Oracle SQL语句中,`x`是指什么:`select * from dual,其中x = 1或1 = 1`

时间:2016-06-29 05:28:30

标签: sql oracle11g

我偶然发现在Oracle SQL中可以发出以下声明: select * from dual where x=1 or 1=1

  1. dual中的列名为dummy,而不是x
  2. 如果我从任何其他表中选择,它仍然有效,返回所有行。
  3. select * from dual where y=1 or 1=1也有效。
  4. select * from dual where z=1 or 1=1 不起作用,提供ORA-00904: z: invalid identifier
  5. select * from dual where x=1 不起作用,提供ORA-06553: PLS-306: wrong number or types of arguments in call to 'OGC_X'
  6. xy指的是什么?

1 个答案:

答案 0 :(得分:2)

似乎发生这种情况是因为在某些Oracle数据库版本中存在名为X和Y的同义词

select owner, synonym_name, table_owner, table_name from dba_synonyms where synonym_name in ('X', 'Y');

OWNER                          SYNONYM_NAME                   TABLE_OWNER                    TABLE_NAME
------------------------------ ------------------------------ ------------------------------ ----------
PUBLIC                         X                              MDSYS                          OGC_X
PUBLIC                         Y                              MDSYS                          OGC_Y