Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Menggunakan Lajur Ungkapan KES dalam Klausa Oracle 10.2 WHERE?

Bagaimana untuk Menggunakan Lajur Ungkapan KES dalam Klausa Oracle 10.2 WHERE?

Barbara Streisand
Barbara Streisandasal
2025-01-03 10:56:39529semak imbas

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

Menggunakan Lajur Ungkapan CASE dalam Klausa WHERE dalam Oracle 10.2

Apabila menggunakan lajur ungkapan CASE dalam klausa WHERE dalam Oracle 10.2, anda boleh menghadapi ralat "ORA-00904: pengecam tidak sah" jika lajur ungkapan CASE ialah belum ditakrifkan dalam pertanyaan. Ini kerana dalam Oracle 10.2, klausa WHERE dinilai sebelum klausa SELECT.

Penyelesaian 1: Sertakan Pertanyaan dalam Pertanyaan Lain

Untuk mengatasi had ini, anda boleh melampirkan pertanyaan dalam pertanyaan lain yang mentakrifkan ungkapan CASE lajur:

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';

Penyelesaian 2: Gandakan Pengiraan dalam Keadaan WHERE

Sebagai alternatif, anda boleh menduplikasi pengiraan ungkapan CASE dalam keadaan WHERE:

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';

Diringkaskan Versi

Anda juga boleh memudahkan pertanyaan dengan hanya memilih jabatan jualan daripada pekerja dengan nombor jabatan bersamaan dengan 20:

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

Atas ialah kandungan terperinci Bagaimana untuk Menggunakan Lajur Ungkapan KES dalam Klausa Oracle 10.2 WHERE?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn