SQL> conn scott/02000059 已连接。 SQL> select * from emp where job = upper('salesman'); EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO 7499 ALLEN SALESMAN 7698 20-2月 -81 1600 300 30 7521 WARD SALESMAN 7698 22-2月 -81 1250 500 30 7654 MARTIN SALESMAN 7698 28-9月 -81 1250 1400 30 EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO 7844 TURNER SALESMAN 7698 08-9月 -81 1500 0 30
SQL> select * from emp where lower(job) = 'clerk'; EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO 7369 G_EASON CLERK 7902 17-12月-80 800 20 7876 ADAMS CLERK 7788 23-5月 -87 1100 20 7900 JAMES CLERK 7698 03-12月-81 950 30 EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO 7934 MILLER CLERK 7782 23-1月 -82 1300 10
SQL> select empno, initcap(ename) ename from emp; EMPNO ENAME 7369 G_Eason 7499 Allen 7521 Ward 7566 Jones 7654 Martin 7698 Blake 7782 Clark 7788 Scott 7839 King 7844 Turner 7876 Adams EMPNO ENAME 7900 James 7902 Ford 7934 Miller 已选择14行。
SQL> select concat(concat(ename, ':'),sal) from emp; CONCAT(CONCAT(ENAME,':'),SAL) G_EASON:800 ALLEN:1600 WARD:1250 JONES:2975 MARTIN:1250 BLAKE:2850 CLARK:2450 SCOTT:3000 KING:5000 TURNER:1500 ADAMS:1100 JAMES:950 FORD:3000 MILLER:1300 已选择14行。
SQL> select * from emp where substr(job, 1, 4) = 'SALE'; EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO 7499 ALLEN SALESMAN 7698 20-2月 -81 1600 300 30 7521 WARD SALESMAN 7698 22-2月 -81 1250 500 30 7654 MARTIN SALESMAN 7698 28-9月 -81 1250 1400 30 EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO 7844 TURNER SALESMAN 7698 08-9月 -81 1500 0 30
SQL> select * from emp where length(ename) = 6; EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO 7654 MARTIN SALESMAN 7698 28-9月 -81 1250 1400 30 7844 TURNER SALESMAN 7698 08-9月 -81 1500 0 30 7934 MILLER CLERK 7782 23-1月 -82 1300 10
SQL> select instr('hello oracle', 'oracle') from dual; INSTR('HELLOORACLE','ORACLE') 7
SQL> select instr('hello oracle hello oracle', 'oracle', 5, 2) from dual; INSTR('HELLOORACLEHELLOORACLE','ORACLE',5,2) 20
SQL> select lpad(job , 9, '*') from emp; LPAD(JOB,9,'*') ****CLERK *SALESMAN *SALESMAN **MANAGER *SALESMAN **MANAGER **MANAGER **ANALYST PRESIDENT *SALESMAN ****CLERK ****CLERK **ANALYST ****CLERK 已选择14行。
SQL> select replace('hello oracle', 'oracle', 'world') replace_fun from dual; REPLACE_FUN hello world
SQL> select sal/30, round(sal/30, 2) from emp; SAL/30 ROUND(SAL/30,2) 26.6666667 26.67 53.3333333 53.33 41.6666667 41.67 99.1666667 99.17 41.6666667 41.67 95 95 81.6666667 81.67 100 100 166.666667 166.67 50 50 36.6666667 36.67 31.6666667 31.67 100 100 43.3333333 43.33 已选择14行。
SQL> select sal/30, trunc(sal/30, 2) from emp; SAL/30 TRUNC(SAL/30,2) 26.6666667 26.66 53.3333333 53.33 41.6666667 41.66 99.1666667 99.16 41.6666667 41.66 95 95 81.6666667 81.66 100 100 166.666667 166.66 50 50 36.6666667 36.66 31.6666667 31.66 100 100 43.3333333 43.33 已选择14行。
SQL> select * from emp where mod(empno, 2) = 0; EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO 7566 JONES MANAGER 7839 02-4月 -81 2975 20 7654 MARTIN SALESMAN 7698 28-9月 -81 1250 1400 30 7698 BLAKE MANAGER 7839 01-5月 -81 2850 30 7782 CLARK MANAGER 7839 09-6月 -81 2450 10 7788 SCOTT ANALYST 7566 19-4月 -87 3000 20 7844 TURNER SALESMAN 7698 08-9月 -81 1500 0 30 DEPTNO 7876 ADAMS CLERK 7788 23-5月 -87 1100 20 7900 JAMES CLERK 7698 03-12月-81 950 30 7902 FORD ANALYST 7566 03-12月-81 3000 20 7934 MILLER CLERK 7782 23-1月 -82 1300 10 已选择10行。
- SYSDATE:该函数用于返回当前系统日期。 - 举例:select sysdate-1 昨天, sysdate 今天,sysdate + 1明天 from dual;。
SQL> select sysdate-1 昨天, sysdate 今天, sysdate + 1 明天 from dual; 昨天 今天 明天 02-12月-17 03-12月-17 04-12月-17
SQL> select round(months_between(sysdate, hiredate)/12) hiredate_year from emp; HIREDATE_YEAR 37 37 37 37 36 37 36 31 36 36 31 36 36 36 已选择14行。
SQL> select ename, add_months(hiredate, 30* 12) from emp; ENAME ADD_MONTHS(HIR G_EASON 17-12月-10 ALLEN 20-2月 -11 WARD 22-2月 -11 JONES 02-4月 -11 MARTIN 28-9月 -11 BLAKE 01-5月 -11 CLARK 09-6月 -11 SCOTT 19-4月 -17 KING 17-11月-11 TURNER 08-9月 -11 ADAMS 23-5月 -17 JAMES 03-12月-11 FORD 03-12月-11 MILLER 23-1月 -12 已选择14行。
SQL> select sysdate, next_day(sysdate, '星期一') 下一个工作日 from dual; SYSDATE 下一个工作日 03-12月-17 04-12月-17
SQL> select sysdate, last_day(sysdate) from dual; SYSDATE LAST_DAY(SYSDA 03-12月-17 31-12月-17
SQL> select round(sysdate, 'YEAR') as 时间的四舍五入 from dual; 时间的四舍五入 01-1月 -18 SQL> select round(sysdate, 'MONTH') as 时间的四舍五入 from dual; 时间的四舍五入 01-12月-17
SQL> select trunc(sysdate, 'MONTH') as 截断的时间 from dual; 截断的时间 01-12月-17 SQL> select trunc(sysdate, 'YEAR') as 截断的时间 from dual; 截断的时间 01-1月 -17
源数据类型 | 目标数据类型 |
---|---|
VARCHAR2或者CHAR | NUMBER |
VARCHAR2或者CHAR | DATE |
NUMBER | VARCHAR2 |
DATE | VARCHAR2 |
如下示例:
SQL> select * from emp where sal > '3000'; EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO 7839 KING PRESIDENT 17-11月-81 5000 10
SQL> select * from emp where hiredate = '17-11月-81'; EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO 7839 KING PRESIDENT 17-11月-81 5000 10
SQL> select to_char(hiredate, 'DD-MON-RR', 'NLS_DATE_LANGUAGE=AMERICAN') to_char from emp; TO_CHAR 17-DEC-80 20-FEB-81 22-FEB-81 02-APR-81 28-SEP-81 01-MAY-81 09-JUN-81 19-APR-87 17-NOV-81 08-SEP-81 23-MAY-87 03-DEC-81 03-DEC-81 23-JAN-82 已选择14行。
SQL> select to_char(hiredate, 'YYYY"年"MM"月"DD"日"') to_char from emp; TO_CHAR 1980年12月17日 1981年02月20日 1981年02月22日 1981年04月02日 1981年09月28日 1981年05月01日 1981年06月09日 1987年04月19日 1981年11月17日 1981年09月08日 1987年05月23日 1981年12月03日 1981年12月03日 1982年01月23日 已选择14行。
常用元素 | 说明 |
---|---|
9 | 显示数字,并且会忽略前导0 |
0 | 显示数字,如果位数不足,则用0补齐 |
. | 在指定位置显示小数点 |
, | 在指定位置显示逗号 |
$ | 在数字前加上美元符号 |
L | 在数字前加上本地货币符号 |
SQL> SELECT sal, to_char(sal, 'L00,000,000.00') to_char FROM emp; SAL TO_CHAR 800 ¥00,000,800.00 1600 ¥00,001,600.00 1250 ¥00,001,250.00 2975 ¥00,002,975.00 1250 ¥00,001,250.00 2850 ¥00,002,850.00 2450 ¥00,002,450.00 3000 ¥00,003,000.00 5000 ¥00,005,000.00 1500 ¥00,001,500.00 1100 ¥00,001,100.00 950 ¥00,000,950.00 3000 ¥00,003,000.00 1300 ¥00,001,300.00 已选择14行。 SQL> SELECT sal, to_char(sal, 'L99,999,999.99') to_char FROM emp; SAL TO_CHAR 800 ¥800.00 1600 ¥1,600.00 1250 ¥1,250.00 2975 ¥2,975.00 1250 ¥1,250.00 2850 ¥2,850.00 2450 ¥2,450.00 3000 ¥3,000.00 5000 ¥5,000.00 1500 ¥1,500.00 1100 ¥1,100.00 950 ¥950.00 3000 ¥3,000.00 1300 ¥1,300.00 已选择14行。
SQL> select ename, hiredate from emp where hiredate > to_date('1981-12-31', 'YYYY-MM-DD'); ENAME HIREDATE SCOTT 19-4月 -87 ADAMS 23-5月 -87 MILLER 23-1月 -82
SQL> select ename, sal from emp where sal > to_number('¥3000', 'L99999'); ENAME SAL KING 5000
SQL> select ename, sal, comm, sal + nvl(comm, 0) from emp; ENAME SAL COMM SAL+NVL(COMM,0) G_EASON 800 800 ALLEN 1600 300 1900 WARD 1250 500 1750 JONES 2975 2975 MARTIN 1250 1400 2650 BLAKE 2850 2850 CLARK 2450 2450 SCOTT 3000 3000 KING 5000 5000 TURNER 1500 0 1500 ADAMS 1100 1100 JAMES 950 950 FORD 3000 3000 MILLER 1300 1300 已选择14行。
SQL> select ename, sal, comm, nvl2(comm, sal+ comm, sal) nvl2 from emp; ENAME SAL COMM NVL2 G_EASON 800 800 ALLEN 1600 300 1900 WARD 1250 500 1750 JONES 2975 2975 MARTIN 1250 1400 2650 BLAKE 2850 2850 CLARK 2450 2450 SCOTT 3000 3000 KING 5000 5000 TURNER 1500 0 1500 ADAMS 1100 1100 JAMES 950 950 FORD 3000 3000 MILLER 1300 1300 已选择14行。
SQL> select ename, sal, comm, coalesce(sal + comm, sal) coalesce from emp; ENAME SAL COMM COALESCE EASON 3000 3000 G_EASON 800 800 ALLEN 1600 300 1900 WARD 1250 500 1750 JONES 2975 2975 MARTIN 1250 1400 2650 BLAKE 2850 2850 CLARK 2450 2450 SCOTT 3000 3000 KING 5000 5000 TURNER 1500 0 1500 ADAMS 1100 1100 JAMES 950 950 FORD 3000 3000 MILLER 1300 1300 已选择15行。
示例:想显示全部雇员的职位,但是这些职位要求替换为中文显示。
SQL> select empno, ename, case job when 'CLERK' then '办事员' when 'SALESMAE' then '销售' when 'MANAGER' then '经理' when 'ANALYST' then '分析员' else '总裁' end case from emp; EMPNO ENAME CASE 7951 EASON 分析员 7369 G_EASON 办事员 7499 ALLEN 总裁 7521 WARD 总裁 7566 JONES 经理 7654 MARTIN 总裁 7698 BLAKE 经理 7782 CLARK 经理 7788 SCOTT 分析员 7839 KING 总裁 7844 TURNER 总裁 7876 ADAMS 办事员 7900 JAMES 办事员 7902 FORD 分析员 7934 MILLER 办事员 已选择15行。 SQL>
SQL> select empno, ename, job, decode(job, 'CLERK', '办事员', 'SALESMAN', '销售', 'MANAGER', '经理', 'ANALYST', '分析员', '总裁') from emp; EMPNO ENAME JOB DECODE 7951 EASON ANALYST 分析员 7369 G_EASON CLERK 办事员 7499 ALLEN SALESMAN 销售 7521 WARD SALESMAN 销售 7566 JONES MANAGER 经理 7654 MARTIN SALESMAN 销售 7698 BLAKE MANAGER 经理 7782 CLARK MANAGER 经理 7788 SCOTT ANALYST 分析员 7839 KING PRESIDENT 总裁 7844 TURNER SALESMAN 销售 7876 ADAMS CLERK 办事员 7900 JAMES CLERK 办事员 7902 FORD ANALYST 分析员 7934 MILLER CLERK 办事员 已选择15行。
SQL> select to_char(next_day(add_months(hiredate,3), '星期一'), 'YYYY-MM-DD') new_date from emp; NEW_DATE 2018-03-05 1981-03-23 1981-05-25 1981-05-25 1981-07-06 1982-01-04 1981-08-03 1981-09-14 1987-07-20 1982-02-22 1981-12-14 1987-08-24 1982-03-08 1982-03-08 1982-04-26 已选择15行。
SQL> select to_char(round(sal/30, 2), 'L9,999.99') from emp; TO_CHAR(ROUND(SAL/3 ¥100.00 ¥26.67 ¥53.33 ¥41.67 ¥99.17 ¥41.67 ¥95.00 ¥81.67 ¥100.00 ¥166.67 ¥50.00 ¥36.67 ¥31.67 ¥100.00 ¥43.33 已选择15行。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。