sql >> Databasteknik >  >> RDS >> Oracle

Oracle Conditional where-klausul

Använda ett CASE uttryck i WHERE klausul borde göra susen. När du säger att du inte behöver where-satsen om villkoret inte är uppfyllt, är allt du vill ha ett villkor som WHERE 1 = 1 , d.v.s. när villkoret inte är uppfyllt, returnera alla rader. Så du måste göra villkoret inte uppfyllt som alltid TRUE .

Till exempel,

Jag har ett arbetsbord,

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>

Jag vill välja personalinformation, om avdelningen är 20, använd where-klausulen annars returnerar all personalinformation, men filtrera avdelningen som uppfyller where-villkoret.

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>

Så för avdelning 20 tillämpas filtret av where-satsen, och jag får bara raden för ename SCOTT, för andra returnerar det alla rader.



  1. Skapa rollbaserad åtkomstkontroll i MongoDB

  2. mySQL DataSource på Visual Studio 2012

  3. Oracle SQL - Fråga för att beräkna värden från flera tabeller

  4. PHP Rotera och lägg till en array