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进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。