Oracle
 sql >> база данни >  >> RDS >> Oracle

Условна клауза where на Oracle

Използване на КАЛЪФи израз в WHERE клаузата трябва да свърши работа. Когато кажете, че нямате нужда от клаузата where, ако условието не е изпълнено, тогава всичко, което искате, е условие като WHERE 1 = 1 , т.е. когато условието не е изпълнено, връща всички редове. Така че трябва да направите условието за неспазване както винаги ВЯРНО .

Например,

Имам таблица на служителите,

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>

Искам да избера подробностите за служителите, ако отделът е 20, тогава използвайте клаузата where, иначе ще върна всички данни за служителите, но филтрирайте отдела, който отговаря на условието 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>

И така, за отдел 20 филтърът се прилага от клауза where и получавам само реда за ename SCOTT, за други връща всички редове.



  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, за да получите брой години

  2. Oracle изберете да не връща всички колони под sqlplus

  3. Как да инсталирате Oracle Linux Automation Manager (известен още като "Oracle Ansible Tower")

  4. запазете специалния символ ansi в база данни на oracle с помощта на php

  5. Свържете две таблици, когато няма стойност в една таблица