首页 > 解决方案 > 在 oracle 中复制表时的列别名

问题描述

嗨,我正在HR使用查询复制架构中的员工表:

Create table copy_employees as ( select last_name,salary*12 from employees);

但是错误表明salary需要别名。

在我做之后salary*12 as sal它起作用了。

我的问题是为什么需要这种别名?

标签: oracleoracle11gcolumn-alias

解决方案


a CTAS( Create Table As Select) 语句就像 aCreate Table DDL statement其中列命名有一些约定,例如使用

  • the underscore "_"

  • the dollar sign "$"

  • pound sign "#"

    允许在列名中使用,但不允许"*"使用星号(如您的情况),因此无法创建包含带星号的列的表。在这种情况下,Oracle 尝试使用表达式salary*12作为列名并失败。


推荐阅读