Oracle中是否需要'as'关键字来定义别名?

Jon*_*han 49 sql oracle alias required

Oracle中是否需要'AS'关键字来为SELECT语句中的列定义别名?

我注意到了

SELECT column_name AS "alias"
Run Code Online (Sandbox Code Playgroud)

是相同的

SELECT column_name "alias"
Run Code Online (Sandbox Code Playgroud)

我想知道以后一种方式定义列别名的后果是什么.

Rog*_*sjö 42

根据select_list Oracle选择文档,AS是可选的.

作为个人笔记,我认为使用AS更容易阅读

  • 在连接表别名中,不支持`AS`(在Oracle 11c上测​​试) (4认同)

Eri*_*ang 15

(经测试Oracle 11g)

关于AS:

  • 结果列上使用时,AS是可选的.
  • 表名上使用时,AS不应添加,否则是错误.

关于double quote:

  • 它对结果列和表名都是可选的和有效的.

例如

-- 'AS' is optional for result column
select (1+1) as result from dual;
select (1+1) result from dual;


-- 'AS' shouldn't be used for table name
select 'hi' from dual d;


-- Adding double quotes for alias name is optional, but valid for both result column & table name,
select (1+1) as "result" from dual;
select (1+1) "result" from dual;

select 'hi' from dual "d";
Run Code Online (Sandbox Code Playgroud)


TNK*_*TNK 7

没有双引号的AS很好.

SELECT employee_id,department_id AS department
FROM employees
order by department
Run Code Online (Sandbox Code Playgroud)

- 好 -

SELECT employee_id,department_id AS "department"
FROM employees
order by department
Run Code Online (Sandbox Code Playgroud)

- 对oracle的恐怖 -

如果使用ORDER BY子句,最好使用AS而不使用双引号


小智 6

两者都是正确的.Oracle允许使用两者.


Kis*_*mar 5

<kdb></kdb> 当我们在Alias Name中有一个空格时需要

SELECT employee_id,department_id AS "Department ID"
FROM employees
order by department
Run Code Online (Sandbox Code Playgroud)


小智 5

我的结论是(经测试12c):

  • AS始终是可选的,有或没有""; AS没有区别(仅限列别名,您不能使用AS前面的表别名)
  • 但是,有或没有""确实有所不同,因为""让别名的小写成为可能

因此:

SELECT {T / t} FROM (SELECT 1 AS T FROM DUAL); -- Correct
SELECT "tEST" FROM (SELECT 1 AS "tEST" FROM DUAL); -- Correct
SELECT {"TEST" / tEST} FROM (SELECT 1 AS "tEST" FROM DUAL ); -- Incorrect

SELECT test_value AS "doggy" FROM test ORDER BY "doggy"; --Correct
SELECT test_value AS "doggy" FROM test WHERE "doggy" IS NOT NULL; --You can not do this, column alias not supported in WHERE & HAVING
SELECT * FROM test "doggy" WHERE "doggy".test_value IS NOT NULL; -- Do not use AS preceding table alias
Run Code Online (Sandbox Code Playgroud)

因此,使用AS和""导致问题的原因不是AS

注意:如果别名包含空格,则需要"双引号";如果它包含小写字符,则必须使用双引号,并且必须在结果集中显示为小写字符.在所有其他场景中,它的可选性可以忽略不计.