it-swarm.com.de

Ist das 'as'-Schlüsselwort in Oracle zur Definition eines Alias ​​erforderlich?

Ist das Schlüsselwort 'AS' in Oracle erforderlich, um einen Aliasnamen für eine Spalte in einer SELECT-Anweisung zu definieren? 

Ich bemerkte, dass 

SELECT column_name AS "alias"

ist das gleiche wie

SELECT column_name "alias"

Ich frage mich, was die Konsequenzen sind, wenn man einen Spaltenalias auf die zweite Art definiert. 

42
Jonathan

Entsprechend der select_list Oracle select-Dokumentation ist der AS optional.

Als persönliche Anmerkung halte ich es für einfacher, mit der AS zu lesen

38
Roger Lindsjö

(Getestet am Oracle 11g)

Über AS:

  • Bei Verwendung in result Spalte ist AS optional.
  • Bei Verwendung in Tabellenname sollte AS nicht hinzugefügt werden, andernfalls ist es ein Fehler.

Über double quote:

  • Es ist optional und gilt sowohl für die Ergebnisspalte als auch für den Tabellennamen.

z.B

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

AS ohne doppelte Anführungszeichen ist gut.

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

--error auf Oracle--

wenn Sie die ORDER BY-Klausel verwenden, ist es besser, AS ohne doppelte Anführungszeichen zu verwenden 

7
TNK

Beide sind richtig. Oracle erlaubt die Verwendung beider.

6
Pawan Tejwani

<kdb></kdb> ist erforderlich, wenn in Alias ​​Name ein Leerzeichen enthalten ist

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

Meine Schlussfolgerung ist, dass (auf 12c getestet wurde):

  • AS ist immer optional, entweder mit oder ohne ""; AS macht keinen Unterschied (nur Spaltenalias, Sie können keinen AS-vorangegangenen Tabellenalias verwenden)
  • Mit oder ohne "" macht jedoch einen Unterschied, weil "" Kleinbuchstaben für einen Alias ​​möglich machen

also:

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

Der Grund, warum das USING AS AND "" Problem verursacht, ist NICHT AS

Hinweis: "" doppelte Anführungszeichen sind erforderlich, wenn der Alias ​​Leerzeichen OR enthält, wenn er Kleinbuchstaben enthält und MUSS in Result Set als Kleinbuchstaben angezeigt werden. In allen anderen Szenarien ist es OPTIONAL und kann ignoriert werden.

5
iceSea

Es gibt keinen Unterschied zwischen beiden, AS ist nur eine explizitere Art, den Alias ​​zu erwähnen, was gut ist, da einige abhängige Bibliotheken von diesem kleinen Schlüsselwort abhängen. z.B. JDBC 4.0 . Je nach Verwendung kann ein unterschiedliches Verhalten beobachtet werden.

Siehe this . Ich würde immer empfehlen, die vollständige Form der Semantik zu verwenden, um solche Probleme zu vermeiden.

1
ray