web-dev-qa-db-ja.com

Oracleでエイリアスを定義するには「as」キーワードが必要ですか?

SELECTステートメントの列のエイリアス名を定義するには、Oracleで「AS」キーワードが必要ですか?

きがついた

SELECT column_name AS "alias"

と同じです

SELECT column_name "alias"

後者の方法で列エイリアスを定義すると、どのような結果になるのかと思います。

48
Jonathan

Select_listによれば Oracle select documentation ASはオプションです。

個人的なメモとして、ASで読む方が簡単だと思います

42
Roger Lindsjö

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";
14
Eric Wang

二重引用符なしのASが適切です。

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句を使用する場合は、二重引用符なしでASを使用することをお勧めします

7
TNK

両方とも正しいです。 Oracleは両方の使用を許可します。

6
Pawan Tejwani

<kdb></kdb>は、エイリアス名に次のようなスペースがある場合に必要です。

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

私の結論は次のとおりです(12cでテスト済み):

  • ASは、「」の有無にかかわらず、常にオプションです。 ASは違いを生じません(列エイリアスのみ、ASの前のテーブルエイリアスは使用できません)
  • ただし、 "-"の有無にかかわらず違いが生じます。これは、""でエイリアスの小文字を使用できるようにするため

副<文>この[前述の事実の]結果として、それ故に、従って、だから◆【同】consequently; therefore <文>このような方法で、このようにして、こんなふうに、上に述べたように◆【同】in this manner <文>そのような程度まで<文> AひいてはB◆【用法】A and thus B <文>例えば◆【同】for example; as an example :

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ではありません

注: ""エイリアスにスペースが含まれる場合は二重引用符が必要ですOR小文字が含まれ、結果セットに小文字として表示されなければなりません。他のすべてのシナリオでは、オプションであり、無視できます。

5
iceSea

両者の間に違いはありません。ASはエイリアスをより明確に言及する方法であり、依存性のあるlibrariesがこの小さなキーワードに依存しているためです。例えばJDBC 4.0使用方法に応じて、さまざまな動作を観察できます。

this を参照してください。このような問題を避けるために、完全な形式のセマンティックを使用することを常にお勧めします。

1
ray