在sql中设置*之后的别名

时间:2017-12-19 13:22:35

标签: sql oracle wildcard

有没有办法在Asterisk(*)之后为ORACLE SQL中的不同列创建别名?

SELECT * 
FROM TABLE 
WHERE INDEX_1 = 5
AND INDEX_2 = 6 

相反有没有办法在*之后设置别名?

SELECT * INDEX_1 AS INDECIES
FROM TABLE 
WHERE INDEX_1 = 5
AND INDEX_2 = 6
; 

3 个答案:

答案 0 :(得分:0)

没有

partSELECT语句的select_list oracle grammar的语法是:

{ *
  | { query_name.*
      | [ schema. ]
        { table | view | materialized view } .*
      | expr [ [ AS ] c_alias ]
    }
    [, { query_name.*
       | [ schema. ]
         { table | view | materialized view } .*
       | expr [ [ AS ] c_alias ]
       }
    ]...
}

这意味着,星号和其他内容,或行数限定的星号和离散列。 *。

后无法使用c_alias令牌

可以做什么,就是组合星号和字段列表,即使这两个部分都引用同一个表,如下所示:

SELECT
  TA1.*,
  TA1.Column1 AS ColumnX
FROM Table1 TA1

不鼓励various reasons使用星号。在ad-hoc查询中使用它是为了方便。

答案 1 :(得分:0)

虽然也可以使用一点“混合”:行数限定的星号 AND (即不是OR)字段列表,例如

SQL> select d.*, e.ename
  2  from dept d, emp e
  3  where e.deptno = d.deptno
  4    and d.deptno = 10;

    DEPTNO DNAME          LOC           ENAME
---------- -------------- ------------- ----------
        10 ACCOUNTING     NEW YORK      KING
        10 ACCOUNTING     NEW YORK      CLARK
        10 ACCOUNTING     NEW YORK      MILLER
        10 ACCOUNTING     NEW YORK
        10 ACCOUNTING     NEW YORK

SQL>

答案 2 :(得分:0)

如果您使用的是SQLPLUS,则可以使用COLUMN命令设置为任何列显示的标题,无论是使用星号还是按名称选择它。

E.g。 COLUMN col_123 HEADING'帐号'。

此处的SQLPLUS参考位于:https://docs.oracle.com/cd/B28359_01/server.111/b31189/ch12013.htm