sql >> Databáze >  >> RDS >> Oracle

Oracle Podmíněná klauzule where

Pomocí CASE výraz v KDE klauzule by měla stačit. Když říkáte, že nepotřebujete klauzuli where, pokud není splněna podmínka, pak vše, co chcete, je podmínka jako WHERE 1 = 1 , tj. když podmínka není splněna, vrátí všechny řádky. Musíte tedy nastavit nesplněnou podmínku jako vždy PRAVDA .

Například,

Mám stůl pro zaměstnance,

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>

Chci vybrat údaje o zaměstnanci, pokud je oddělení 20, použijte klauzuli where else vrátí všechny podrobnosti o zaměstnanci, ale vyfiltruje oddělení, které splňuje podmínku where.

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>

Takže pro oddělení 20 se použije filtr podle klauzule where a dostanu pouze řádek pro ename SCOTT, pro ostatní vrátí všechny řádky.



  1. Úvahy o integritě dat a výkonu v semisynchronní replikaci MySQL

  2. Jak vytvořit objekt oracle.sql.ARRAY?

  3. Jaký je rozdíl mezi primárním klíčem a náhradním klíčem?

  4. Jak odebrat sloupec v SQL Server pomocí T-SQL