SELECTステートメントの列のエイリアス名を定義するためにOracleで「AS」キーワードが必要ですか?
きがついた
SELECT column_name AS "alias"
と同じです
SELECT column_name "alias"
後者の方法で列エイリアスを定義すると、どのような結果になるのでしょうか。
select_list Oracle selectのドキュメントによると、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
SELECT employee_id,department_id AS "department"
FROM employees
order by department
--Oracleのエラー--
ORDER BY句を使用する場合は、二重引用符なしでASを使用することをお勧めします
どちらも正しいです。Oracleでは、両方の使用が許可されています。
私の結論は次のとおりです(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
したがって、USING ASAND""が問題を引き起こす理由はASではありません
注:エイリアスにスペースが含まれている場合、またはエイリアスに小文字が含まれていて、結果セットに小文字として表示される必要がある場合は、""二重引用符が必要です。他のすべてのシナリオでは、そのオプションであり、無視できます。
エイリアス名に次のようなスペースがある場合は、引用符が必要です
SELECT employee_id,department_id AS "Department ID"
FROM employees
order by department
両方の間に違いはありません。一部の依存ライブラリがこの小さなキーワードに依存しているAS
ため、エイリアスについてより明確に言及する方法です。例:JDBC4.0。用途によっては、異なる動作が見られます。
これを参照してください。このような問題を回避するために、常に完全な形式のセマンティクスを使用することをお勧めします。