【问题标题】:setting an alias after the * in sql在sql中的*之后设置别名
【发布时间】:2017-12-19 13:22:34
【问题描述】:

有没有办法在 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
; 

【问题讨论】:

  • 答案是:没有。(如果只有一列,为什么不打出来?)
  • 我只是想看看是否可以更改一列的名称,同时仍显示其他列。我知道这不是很实用,但我只是在学习。
  • 我不确定这是否是您要查找的内容,但您可以在表名称上设置别名,从而得到所有引用的字段,如 alias.field
  • 既然留下SELECT *而不是明确命名所有列是一个坏习惯(例外:原型设计,EXISTS() 检查)为什么需要这个?
  • SELECT * 用于惰性临时查询。良好的编程习惯是指定每一列。

标签: sql oracle wildcard


【解决方案1】:

没有。

oracle grammarSELECT 语句的 select_list part 的语法是这样的:

{ *
  | { 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 使用星号。在临时查询中使用它是为了方便。

【讨论】:

    【解决方案2】:

    不过,也可以使用一点“混合”:行源限定的星号 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>
    

    【讨论】:

      【解决方案3】:

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

      例如 COLUMN col_123 HEADING '帐号'。

      SQLPLUS 参考在这里:https://docs.oracle.com/cd/B28359_01/server.111/b31189/ch12013.htm

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-10-08
        • 2019-01-22
        • 2021-10-18
        • 2019-09-26
        • 2016-02-04
        • 1970-01-01
        • 2019-04-21
        • 2010-10-31
        相关资源
        最近更新 更多