sql >> Database >  >> RDS >> Oracle

Oracle voorwaardelijk waar clausule

Een CASE gebruiken uitdrukking in de WHERE clausule zou het moeten doen. Als je zegt dat je de where-clausule niet nodig hebt als niet aan de voorwaarde wordt voldaan, dan is alles wat je wilt een voorwaarde zoals WHERE 1 = 1 , d.w.z. wanneer niet aan de voorwaarde wordt voldaan, retourneert u alle rijen. U moet dus de voorwaarde waaraan niet is voldaan zoals altijd TRUE . maken .

Bijvoorbeeld,

Ik heb een personeelstafel,

SQL> SELECT empno, ename, deptno
  2  FROM emp;

     EMPNO ENAME          DEPTNO
---------- ---------- ----------
      7369 SMITH              20
      7499 ALLEN              30
      7521 WARD               30
      7566 JONES              20
      7654 MARTIN             30
      7698 BLAKE              30
      7782 CLARK              10
      7788 SCOTT              20
      7839 KING               10
      7844 TURNER             30
      7876 ADAMS              20
      7900 JAMES              30
      7902 FORD               20
      7934 MILLER             10

14 rows selected.

SQL>

Ik wil de werknemersgegevens selecteren, als de afdeling 20 is, gebruik dan de waar-clausule, anders retourneer alle werknemersgegevens, maar filter de afdeling die voldoet aan de waar-voorwaarde.

SQL> SELECT empno, ename, deptno
  2  FROM emp
  3  WHERE ename =
  4    CASE
  5      WHEN deptno = 20
  6      THEN 'SCOTT'
  7      ELSE ename
  8    END
  9  /

     EMPNO ENAME          DEPTNO
---------- ---------- ----------
      7499 ALLEN              30
      7521 WARD               30
      7654 MARTIN             30
      7698 BLAKE              30
      7782 CLARK              10
      7788 SCOTT              20
      7839 KING               10
      7844 TURNER             30
      7900 JAMES              30
      7934 MILLER             10

10 rows selected.

SQL>

Dus voor afdeling 20 wordt het filter toegepast door de clausule waar, en ik krijg alleen de rij voor ename SCOTT, voor anderen retourneert het alle rijen.



  1. Toon ladende afbeelding terwijl PHP wordt uitgevoerd

  2. Hoe gegevens uit de database te halen en ze te bekijken als een ListView

  3. PostgreSQL:rijen selecteren die voorkomen op een bepaalde dag van de week, in een specifieke tijdzone

  4. ASP.NET MVC + MySql Membership Provider, gebruiker kan niet inloggen