Oracle
 sql >> Teknologi Basis Data >  >> RDS >> Oracle

Oracle Conditional di mana klausa

Menggunakan KASUS ekspresi di WHERE klausa harus melakukan trik. Ketika Anda mengatakan Anda tidak memerlukan klausa where jika kondisi tidak terpenuhi, maka yang Anda inginkan hanyalah kondisi seperti WHERE 1 = 1 , yaitu ketika kondisi tidak terpenuhi maka kembalikan semua baris. Jadi, Anda perlu membuat kondisi tidak terpenuhi seperti biasa TRUE .

Misalnya,

Saya memiliki tabel karyawan,

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>

Saya ingin memilih detail karyawan, jika departemen 20 maka gunakan klausa where else mengembalikan semua detail karyawan, tetapi filter departemen yang memenuhi kondisi 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>

Jadi, untuk departemen 20, filter diterapkan oleh klausa where, dan saya hanya mendapatkan baris untuk ename SCOTT, untuk yang lain mengembalikan semua baris.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Oracle Analytics - partisi dan pemesanan kueri sql

  2. Kursor bersarang di kursor

  3. Oracle sql MERGE INTO dengan satu klausa where

  4. Memanipulasi data JSON dengan SQL di Oracle

  5. Bagaimana mengubah nilai awal urutan db