59 votes

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

Le mot-clé 'AS' est-il nécessaire 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 la même chose que

SELECT column_name "alias"

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

48voto

Roger Lindsjö Points 6514

Selon la select_list Documentation sur Oracle select l'AS est facultatif.

A titre personnel, je pense qu'il est plus facile de lire avec l'AS.

30voto

fly bird Points 818

(Testé sur Oracle 11g )

À propos de AS :

  • Lorsqu'il est utilisé sur colonne de résultats , AS est facultatif.
  • Lorsqu'il est utilisé sur nom du tableau , AS ne doit pas être ajouté, sinon c'est une erreur.

À propos de double quote :

  • Il est facultatif 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";

8voto

TNK Points 175

AS sans guillemets est bon.

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

--erreur sur oracle--

Il est donc préférable d'utiliser AS sans double guillemet si vous utilisez la clause ORDER BY.

6voto

Pawan Tejwani Points 99

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

6voto

IceSea Points 71

Ma conclusion est queTesté sur 12c :

  • AS est toujours facultatif, avec ou sans "" ; L'AS ne fait aucune différence (alias de colonne uniquement, vous ne pouvez pas utiliser l'alias de table AS précédent)
  • Cependant, avec ou sans "" fait une différence car "" permet d'utiliser une 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 l'utilisation de AS et "" pose problème est que PAS AS

Nota: "Les guillemets doubles sont requis si l'alias contient un espace OU s'il contient des caractères minuscules et DOIT apparaître dans le jeu de résultats comme des caractères minuscules. Dans tous les autres cas, ils sont OPTIONNELS et peuvent être ignorés.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X