sql >> データベース >  >> RDS >> Oracle

OracleConditionalwhere句

    ケースの使用 場所での表現 節はトリックを行う必要があります。条件が満たされない場合に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の行のみを取得し、その他の場合はすべての行を返します。



    1. PL/pgSQLで行型変数を宣言します

    2. Knex.js-「where」句を使用して一意のインデックスを作成するにはどうすればよいですか?

    3. Oracle PL / SQL:スタック・トレース、パッケージ名、およびプロシージャ名を取得する方法

    4. MySQLステートメントでORを使用することは、括弧の有無でどの程度正確に異なりますか?