Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Menggunakan Lajur Ungkapan KES dalam Klausa Oracle 10.2 WHERE?
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!