oracle sql中星号的使用

Posted

技术标签:

【中文标题】oracle sql中星号的使用【英文标题】:Use of asterisk in oracle sql 【发布时间】:2019-03-20 22:56:29 【问题描述】:

为什么在 SELECT 子句中单独使用星号时在 oracle sql 中使用星号完全有效,但当 SELECT 中还有其他表达式时会导致错误?

例如:

select * from table1  -- is ok

但是:

select field, * from table -- is not ok

【问题讨论】:

在过去的几年里,我一直在寻找一种更好的方式来表达 SQL 中的列和表达式,但除了* 之外没有太多。当表遭受修改时,这对于 ORM 很重要,以便随着时间的推移产生有效的查询。对该问题 +1,即使我知道还没有更好的答案。 【参考方案1】:

Oracle 只允许在没有其他列时使用“裸”星号。

否则,您需要对其进行限定:

select t.field, t.*
from table1 t;

我怀疑原因是 Oracle 认为 select * 是一个完整的子句,而不是 * 是所有列的缩写。

【讨论】:

以上是关于oracle sql中星号的使用的主要内容,如果未能解决你的问题,请参考以下文章

SQL Server 2000 中的这个操作数(*= 星号)是啥?

关于SQL中SELECT *(星号)的危害论

PL/SQL用星号拼出金字塔

select 通配符 星号 百分号 的区别??

如何用第二列值替换星号

mysql查询语句中使用星号真的慢的要死?