Требуется ли ключевое слово " 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
<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
помните, что "" позволяет сделать псевдоним в нижнем регистре