我偶然发现在Oracle SQL中可以发出以下声明:
select * from dual where x=1 or 1=1
。
dual
中的列名为dummy
,而不是x
。select * from dual where y=1 or 1=1
也有效。select * from dual where z=1 or 1=1
不起作用,提供ORA-00904: z: invalid identifier
。select * from dual where x=1
不起作用,提供ORA-06553: PLS-306: wrong number or types of arguments in call to 'OGC_X'
。 x
和y
指的是什么?
答案 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