SELECT ename, sal,
CASE WHEN sal <= 2000 THEN 'UNDERPAID'
WHEN sal >= 4000 THEN 'OVERPAID'
ELSE 'OK' END AS status
FROM emp;
SELECT * FROM (
SELECT ename, job FROM emp ORDER BY DBMS_RANDOM.VALUE()
) WHERE ROWNUM <= 5;
SELECT ename, job FROM emp
ORDER BY SUBSTR(job, LENGTH(job)-1);
SELECT ename, sal, comm FROM emp
ORDER BY comm NULLS LAST;
SELECT ename, sal, job, comm FROM emp
ORDER BY CASE WHEN job = 'SALESMAN' THEN comm ELSE sal END;
SELECT deptno FROM dept
MINUS
SELECT deptno FROM emp;
SELECT ename, comm, COALESCE(comm,0)
FROM emp
WHERE COALESCE(comm,0) < (SELECT comm FROM emp WHERE ename = 'WARD');
DELETE FROM dupes
WHERE id NOT IN (SELECT MIN(id) FROM dupes GROUP BY name);
MERGE INTO emp_commission ec
USING (SELECT * FROM emp) e
ON (ec.empno = e.empno)
WHEN MATCHED THEN
UPDATE SET ec.comm = 1000
DELETE WHERE (sal < 2000)
WHEN NOT MATCHED THEN
INSERT (ec.empno, ec.ename, ec.deptno, ec.comm)
VALUES (e.empno, e.ename, e.deptno, e.comm);
SELECT 'SELECT COUNT(*) FROM ' || table_name || ';' FROM user_tables;
SELECT (LENGTH('10,CLARK,MANAGER') - LENGTH(REPLACE('10,CLARK,MANAGER',',',''))) / LENGTH(',') AS cnt FROM dual;
SELECT REPLACE(TRANSLATE(data,'0123456789','0000000000'),'0') AS ename,
TO_NUMBER(REPLACE(TRANSLATE(LOWER(data),'abcdefghijklmnopqrstuvwxyz',RPAD('z',26,'z')),'z')) AS sal
FROM (SELECT ename||sal AS data FROM emp);
結果:SMITH 800、ALLEN 1600 ...