Требуется ли ключевое слово " as " в Oracle для определения псевдонима?

требуется ли ключевое слово " AS " в Oracle для определения псевдонима столбца в инструкции SELECT?

Я заметил, что

SELECT column_name AS "alias"

это то же самое, что

SELECT column_name "alias"

мне интересно, каковы последствия определения псевдонима столбца последним способом.

6 ответов


согласно select_list Oracle выберите документация AS является необязательным.

в качестве личной заметки я думаю, что легче читать с AS


(проверено на 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";

как без двойных цитат хорошо.

SELECT employee_id,department_id AS department
FROM employees
order by department

-- ok--

SELECT employee_id,department_id AS "department"
FROM employees
order by department

--ошибка в oracle--

поэтому лучше использовать как без двойной цитаты, Если вы используете предложение ORDER BY


оба варианта правильны. Oracle позволяет использовать оба.


<kdb></kdb> требуется, когда у нас есть пробел в имени псевдонима, например

SELECT employee_id,department_id AS "Department ID"
FROM employees
order by department

мой вывод заключается в том, что (протестировано на 12c):

  • как всегда необязательно, С или без"";то (псевдоним столбца только, вы не можете использовать в качестве псевдонима предыдущей таблицы)
  • однако, с или без "" имеет значение, потому что "" позволяет использовать нижний регистр для псевдонима

таким образом :

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

Итак, причина, по которой использование AS и "" вызывает проблему, не AS

помните, что "" позволяет сделать псевдоним в нижнем регистре