ホームページ >データベース >mysql チュートリアル >Oracle 10.2のWHERE句でCASE式列を使用する方法は?

Oracle 10.2のWHERE句でCASE式列を使用する方法は?

Barbara Streisand
Barbara Streisandオリジナル
2025-01-03 10:56:39521ブラウズ

How to Use a CASE Expression Column in an Oracle 10.2 WHERE Clause?

Oracle 10.2 の WHERE 句で CASE 式列を使用する

Oracle 10.2 の WHERE 句で CASE 式列を使用する場合、 CASE 式列が次の場合、エラー「ORA-00904: 無効な識別子」が発生します。クエリではまだ定義されていません。これは、Oracle 10.2 では、WHERE 句が SELECT 句より前に評価されるためです。

解決策 1: クエリを別のクエリで囲む

この制限を克服するには、次のようにします。 CASE 式を定義する別のクエリでクエリを囲むことができます列:

SELECT *
FROM
  ( SELECT ename
         , job
         , CASE deptno
             WHEN 10 THEN 'ACCOUNTS'
             WHEN 20 THEN 'SALES'
                     ELSE 'UNKNOWN'
           END AS department
    FROM emp
  ) tmp
WHERE department = 'SALES';

解決策 2: WHERE 条件で計算を複製する

または、WHERE 条件で CASE 式の計算を複製することもできます:

SELECT ename
     , job
     , CASE deptno
         WHEN 10 THEN 'ACCOUNTS'
         WHEN 20 THEN 'SALES'
                 ELSE 'UNKNOWN'
       END AS department
FROM emp
WHERE
    CASE deptno
      WHEN 10 THEN 'ACCOUNTS'
      WHEN 20 THEN 'SALES'
              ELSE 'UNKNOWN'
    END = 'SALES';

簡略化バージョン

部門番号 20 の従業員から営業部門を選択するだけでクエリを簡素化することもできます:

SELECT ename
     , job
     , 'SALES' AS department
FROM emp
WHERE deptno = 20;

以上がOracle 10.2のWHERE句でCASE式列を使用する方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。