web-dev-qa-db-fra.com

Le mot clé "as" est-il requis dans Oracle pour définir un alias?

Le mot clé "AS" est-il requis dans Oracle pour définir un nom d'alias pour une colonne dans une instruction SELECT? 

J'ai remarqué que 

SELECT column_name AS "alias"

est le même que

SELECT column_name "alias"

Je me demande quelles sont les conséquences de la définition d’un alias de colonne de cette manière. 

42
Jonathan

Selon la liste select_list Oracle select documentation l'AS est facultatif.

En tant que note personnelle, je pense qu'il est plus facile de lire avec l'AS

38
Roger Lindsjö

(Testé sur Oracle 11g)

À propos de AS:

  • Lorsqu'il est utilisé sur result column , AS est facultatif.
  • Lorsqu'il est utilisé sur nom de table , AS ne doit pas être ajouté, sinon c'est une erreur.

À propos de double quote:

  • C'est optionnel et valide pour la colonne de résultat et le nom de la table.

par exemple

-- '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 sans les doubles citations c'est bien.

SELECT employee_id,department_id AS department
FROM employees
order by department

--D'accord--

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

--error sur Oracle--

il vaut donc mieux utiliser AS sans double citation si vous utilisez la clause ORDER BY 

7
TNK

Les deux sont corrects. Oracle permet l'utilisation des deux.

6
Pawan Tejwani

<kdb></kdb> est requis quand nous avons un espace dans Alias ​​Name comme

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

Ma conclusion est que (Testé sur 12c:

  • AS est toujours optionnel, avec ou sans ""; AS ne fait aucune différence (colonne alias uniquement, vous ne pouvez pas utiliser AS comme alias de table précédent)
  • Cependant, avec ou sans "" fait la différence car "" permet la minuscule pour un alias

ainsi :

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

Donc, la raison pour laquelle utiliser AS "" provoque le problème n'est pas aussi

Remarque: "" Les guillemets doubles sont obligatoires si l'alias contient un espace OR s'il contient des caractères minuscules et DOIT être affiché dans Result défini en tant que caractères minuscules. Dans tous les autres scénarios, il est FACULTATIF et peut être ignoré.

5
iceSea