sql >> Database >  >> RDS >> Oracle

SQL herkent kolomalias niet in where-clausule

Een alias kan worden gebruikt in een selectielijst voor zoekopdrachten om een ​​kolom een ​​andere naam te geven. U kunt de alias in GROUP BY, ORDER BY of HAVING-clausules gebruiken om naar de kolom te verwijzen.

Standaard SQL verbiedt verwijzingen naar kolomaliassen in een WHERE-clausule. Deze beperking wordt opgelegd omdat wanneer de WHERE-clausule wordt geëvalueerd, de kolomwaarde mogelijk nog niet is bepaald.

De volgende zoekopdracht is dus illegaal:

SQL> SELECT empno AS employee, deptno AS department, sal AS salary
  2  FROM emp
  3  WHERE employee = 7369;
WHERE employee = 7369
      *
ERROR at line 3:
ORA-00904: "EMPLOYEE": invalid identifier


SQL>

De kolomalias is toegestaan ​​in:

  • GROEPEREN OP
  • BESTEL DOOR
  • HEBBEN

U kunt in de volgende gevallen verwijzen naar de kolomalias in de WHERE-clausule:

  1. Subquery
  2. Common Table Expression (CTE)

Bijvoorbeeld,

SQL> SELECT * FROM
  2  (
  3  SELECT empno AS employee, deptno AS department, sal AS salary
  4  FROM emp
  5  )
  6  WHERE employee = 7369;

  EMPLOYEE DEPARTMENT     SALARY
---------- ---------- ----------
      7369         20        800

SQL> WITH DATA AS(
  2  SELECT empno AS employee, deptno AS department, sal AS salary
  3  FROM emp
  4  )
  5  SELECT * FROM DATA
  6  WHERE employee = 7369;

  EMPLOYEE DEPARTMENT     SALARY
---------- ---------- ----------
      7369         20        800

SQL>


  1. MySQL CHAR() vs T-SQL CHAR():wat is het verschil?

  2. Wat te doen als u geen fouten in het gedeelde objectbestand krijgt wanneer u de OCI-versie Easysoft Oracle ODBC-stuurprogramma gebruikt?

  3. Verschil tussen TRIM() en TRIM_ORACLE() in MariaDB

  4. TIMEFROMPARTS() Voorbeelden in SQL Server (T-SQL)