Heim >Datenbank >MySQL-Tutorial >Wie verwende ich eine CASE-Ausdrucksspalte in einer Oracle 10.2 WHERE-Klausel?
Verwenden einer CASE-Ausdrucksspalte in einer WHERE-Klausel in Oracle 10.2
Wenn Sie eine CASE-Ausdrucksspalte in einer WHERE-Klausel in Oracle 10.2 verwenden, können Sie dies tun Es tritt der Fehler „ORA-00904: ungültiger Bezeichner“ auf, wenn die CASE-Ausdrucksspalte in der Abfrage noch nicht definiert ist. Dies liegt daran, dass in Oracle 10.2 die WHERE-Klausel vor der SELECT-Klausel ausgewertet wird.
Lösung 1: Schließen Sie die Abfrage in eine andere Abfrage ein
Um diese Einschränkung zu überwinden, müssen Sie kann die Abfrage in eine andere Abfrage einschließen, die die CASE-Ausdrucksspalte definiert:
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';
Lösung 2: Duplizieren Sie die Berechnung in der WHERE-Bedingung
Alternativ können Sie die Berechnung des CASE-Ausdrucks in der WHERE-Bedingung duplizieren:
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';
Vereinfachte Version
Sie können die Abfrage auch vereinfachen, indem Sie einfach die Vertriebsabteilung aus Mitarbeitern mit einer Abteilungsnummer gleich auswählen 20:
SELECT ename , job , 'SALES' AS department FROM emp WHERE deptno = 20;
Das obige ist der detaillierte Inhalt vonWie verwende ich eine CASE-Ausdrucksspalte in einer Oracle 10.2 WHERE-Klausel?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!