السلام عليكم الجملة السابقة مفيدة ويمكن صياغتها بالطريقة التالية SELECT DECODE( EMPNO, NULL ,'Emp name not found',EMP_NAME) FROM EMPLOYEE هكذا قد تكون أوضح وقد تستخدم في حالة عدم إدخال قيمة ل EMPNO بمعنى أن EMPNO IS NULL ولكنها لا تستخدم لاختبار EMPNO > 0 فصفر أو أي قيمة أقل من صفر لن تتحقق في الجملة السابقة ولكن إذا أردنا فعلا EMPNO > 0 فنستخدم SELECT DECODE( GREATEST( NVL(EMPNO,0) , 0 ) , 0 ,'Emp name not found',EMP_NAME)
FROM EMPLOYEE وهناك في ORACLE 9i + تعبيرات جيدة جديدة مثل CASE SELECT cust_last_name,
CASE credit_limit WHEN 100 THEN 'Low'
WHEN 5000 THEN 'High'
ELSE 'Medium' END
FROM customers; CUST_LAST_NAME CASECR -------------------- ------ ... Bogart Medium Nolte Medium Loren Medium Gueney Medium
Searched CASE Example The following statement finds the average salary of the employees in the sample table oe.employees, using $2000 as the lowest salary possible:
SELECT AVG(CASE WHEN e.salary > 2000 THEN e.salary
ELSE 2000 END) "Average Salary" from employees e; Average Salary -------------- 6461.68224 هذا وبالله التوفيق أخوكم عدنان
|