ケースの使用 場所での表現 節はトリックを行う必要があります。条件が満たされない場合にwhere句は必要ないと言う場合、必要なのはWHERE 1 = 1
のような条件だけです。 つまり、条件が満たされない場合は、すべての行を返します。したがって、常に TRUEのように満たされていない条件を作成する必要があります 。
たとえば、
従業員テーブルがあります
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の行のみを取得し、その他の場合はすべての行を返します。