Maison >base de données >tutoriel mysql >Comment utiliser une colonne d'expression CASE dans une clause WHERE d'Oracle 10.2 ?
Utilisation de la colonne d'expression CASE dans la clause WHERE dans Oracle 10.2
Lors de l'utilisation d'une colonne d'expression CASE dans une clause WHERE dans Oracle 10.2, vous pouvez rencontrez l'erreur « ORA-00904 : identifiant invalide » si la colonne d'expression CASE n'est pas encore définie dans la requête. En effet, dans Oracle 10.2, la clause WHERE est évaluée avant la clause SELECT.
Solution 1 : Insérez la requête dans une autre requête
Pour surmonter cette limitation, vous peut enfermer la requête dans une autre requête qui définit la colonne d'expression 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';
Solution 2 : Dupliquer le calcul dans la condition WHERE
Vous pouvez également dupliquer le calcul de l'expression CASE dans la condition 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';
Version simplifiée
Vous pouvez également simplifier la requête en sélectionnant simplement le service commercial parmi les salariés dont le numéro de service est égal à 20 :
SELECT ename , job , 'SALES' AS department FROM emp WHERE deptno = 20;
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!