您好,登錄后才能下訂單哦!
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進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。