Требуется ли ключевое слово «as» в Oracle для определения псевдонима? - PullRequest
46 голосов
/ 10 декабря 2011

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

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

SELECT column_name AS "alias"

совпадает с

SELECT column_name "alias"

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

Ответы [ 7 ]

41 голосов
/ 10 декабря 2011

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

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

13 голосов
/ 05 декабря 2016

(проверено на 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";
7 голосов
/ 08 января 2014

КАК без двойных кавычек это хорошо.

SELECT employee_id,department_id AS department
FROM employees
order by department

- в порядке -

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

- ошибка на оракуле -

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

6 голосов
/ 10 декабря 2011

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

5 голосов
/ 02 февраля 2018

Мой вывод таков: (Проверено на 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

Итак, причина, по которой ИСПОЛЬЗОВАНИЕ КАК И "" вызывает проблему, НЕ КАК

Примечание:"" двойные кавычки требуются, если псевдоним содержит пробел ИЛИ, если он содержит символы нижнего регистра и ДОЛЖЕН отображаться в Результате как символы нижнего регистра. Во всех других сценариях это ДОПОЛНИТЕЛЬНО и может быть проигнорировано.

5 голосов
/ 05 января 2015

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

SELECT employee_id,department_id AS "Department ID"
FROM employees
order by department
1 голос
/ 15 февраля 2019

Между ними нет никакой разницы, AS - это просто более явный способ упоминания псевдонима, который хорош, потому что некоторые зависимые библиотеки зависят от этого небольшого ключевого слова. например JDBC 4.0 . Зависит от его использования, может наблюдаться различное поведение.

См. это . Я бы всегда предлагал использовать полную семантическую форму, чтобы избежать подобных проблем.

...