Is it possible to use a Reserved Word as an alias?
The answer is YES. But you need to double quote this Reserved Word, otherwise, it will return an error.
The SQL statement below will work just fine
select sysdate as "SYSDATE" from dual;
While this statement won’t
select sysdate as SYSDATE from dual;
At the same time, you have to remember there is a difference between Reserved Words in Oracle and Keywords. In fact, Keywords can be used as alias even without double quotes.
Oracle Reserved Words
The following words are reserved by Oracle. For this reason, you cannot use them to name database objects such as columns, tables, or indexes.
ACCESS | ELSE | MODIFY | START |
ADD | EXCLUSIVE | NOAUDIT | SELECT |
ALL | EXISTS | NOCOMPRESS | SESSION |
ALTER | FILE | NOT | SET |
AND | FLOAT | NOTFOUND | SHARE |
ANY | FOR | NOWAIT | SIZE |
ARRAYLEN | FROM | NULL | SMALLINT |
AS | GRANT | NUMBER | SQLBUF |
ASC | GROUP | OF | SUCCESSFUL |
AUDIT | HAVING | OFFLINE | SYNONYM |
BETWEEN | IDENTIFIED | ON | SYSDATE |
BY | IMMEDIATE | ONLINE | TABLE |
CHAR | IN | OPTION | THEN |
CHECK | INCREMENT | OR | TO |
CLUSTER | INDEX | ORDER | TRIGGER |
COLUMN | INITIAL | PCTFREE | UID |
COMMENT | INSERT | PRIOR | UNION |
COMPRESS | INTEGER | PRIVILEGES | UNIQUE |
CONNECT | INTERSECT | PUBLIC | UPDATE |
CREATE | INTO | RAW | USER |
CURRENT | IS | RENAME | VALIDATE |
DATE | LEVEL | RESOURCE | VALUES |
DECIMAL | LIKE | REVOKE | VARCHAR |
DEFAULT | LOCK | ROW | VARCHAR2 |
DELETE | LONG | ROWID | VIEW |
DESC | MAXEXTENTS | ROWLABEL | WHENEVER |
DISTINCT | MINUS | ROWNUM | WHERE |
DROP | MODE | ROWS | WITH |
Oracle Keywords
The following words also have a special meaning to Oracle but are not reserved words and so can be used to name database objects such including aliases .
ADMIN | CURSOR | FOUND | MOUNT |
AFTER | CYCLE | FUNCTION | NEXT |
ALLOCATE | DATABASE | GO | NEW |
ANALYZE | DATAFILE | GOTO | NOARCHIVELOG |
ARCHIVE | DBA | GROUPS | NOCACHE |
ARCHIVELOG | DEC | INCLUDING | NOCYCLE |
AUTHORIZATION | DECLARE | INDICATOR | NOMAXVALUE |
AVG | DISABLE | INITRANS | NOMINVALUE |
BACKUP | DISMOUNT | INSTANCE | NONE |
BEGIN | DOUBLE | INT | NOORDER |
BECOME | DUMP | KEY | NORESETLOGS |
BEFORE | EACH | LANGUAGE | NORMAL |
BLOCK | ENABLE | LAYER | NOSORT |
BODY | END | LINK | NUMERIC |
CACHE | ESCAPE | LISTS | OFF |
CANCEL | EVENTS | LOGFILE | OLD |
CASCADE | EXCEPT | MANAGE | ONLY |
CHANGE | EXCEPTIONS | MANUAL | OPEN |
CHARACTER | EXEC | MAX | OPTIMAL |
CHECKPOINT | EXPLAIN | MAXDATAFILES | OWN |
CLOSE | EXECUTE | MAXINSTANCES | PACKAGE |
COBOL | EXTENT | MAXLOGFILES | PARALLEL |
COMMIT | EXTERNALLY | MAXLOGHISTORY | PCTINCREASE |
COMPILE | FETCH | MAXLOGMEMBERS | PCTUSED |
CONSTRAINT | FLUSH | MAXTRANS | PLAN |
CONSTRAINTS | FREELIST | MAXVALUE | PLI |
CONTENTS | FREELISTS | MIN | PRECISION |
CONTINUE | FORCE | MINEXTENTS | PRIMARY |
CONTROLFILE | FOREIGN | MINVALUE | PRIVATE |
COUNT | FORTRAN | MODULE | PROCEDURE |
Oracle Keywords (continued):
PROFILE | SAVEPOINT | SQLSTATE | TRACING |
QUOTA | SCHEMA | STATEMENT_ID | TRANSACTION |
READ | SCN | STATISTICS | TRIGGERS |
REAL | SECTION | STOP | TRUNCATE |
RECOVER | SEGMENT | STORAGE | UNDER |
REFERENCES | SEQUENCE | SUM | UNLIMITED |
REFERENCING | SHARED | SWITCH | UNTIL |
RESETLOGS | SNAPSHOT | SYSTEM | USE |
RESTRICTED | SOME | TABLES | USING |
REUSE | SORT | TABLESPACE | WHEN |
ROLE | SQL | TEMPORARY | WRITE |
ROLES | SQLCODE | THREAD | WORK |
ROLLBACK | SQLERROR | TIME |