Oracle大型資料庫系統課程-日期格式及直覺化的報告型表格

Oracle大型資料庫系統課程-日期格式及直覺化的報告型表格

Error_0x03F7 作者

程式碼解釋筆記

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
-- 將後續的所有操作及結果紀錄到"1.LST"檔案裡
SQL> spool 1

-- 設定每行最多能顯示100個字元
SQL> set linesize 100

-- 設定最多能顯示30筆查詢結果
SQL> set pagesize 30

-- 從"dual"表格中選取系統日期。
-- "sysdate"是Oracle的內建函式,可以查詢目前日期跟時間
SQL> select sysdate
2 from dual;

SYSDATE
--------------
17-10-23

-- 把日期的顯示方式從預設值(DD-MON-YY)改成(YYYY-MM-DD)
SQL> alter session set nls_date_format='yyyy-mm-dd';

已更改階段作業.

-- 再次執行就可以看到日期的顯示方式變成我們熟悉的樣子了
SQL> select sysdate
2 from dual;

SYSDATE
----------
2023-10-17

-- 這次的查詢加上字串,讓結果顯示更直覺
SQL> select substr(sysdate,1,4)||'年'||substr(sysdate,6,2)||'月'||substr(sysdate,9,2)||'日' "今天日期"
2 from dual;

今天日期
----------------------
20231017

-- 從"emp"表格的"rownum"(代表資料列序號)、"ename"(名字)、"sal"(員工薪資)乘上12再加上nvl(comm,1)、"mgr"(主管ID)欄位取得資料,字串部分也是為了讓顯示更直覺
-- 補充: 上面nvl()函式會將空值替換成另一個值,在這如果comm是null,則會將其替換成1
SQL> select rownum||'-'||ename||' 年薪共 '||to_char(sal*12+nvl(comm,1))||'元, 主管是 '||nvl(to_char(mgr),'NULL') "Employee Data"
2 from emp;

Employee Data
----------------------------------------------------------------------------------------------------
1-SMITH 年薪共 9601元, 主管是 7902
2-ALLEN 年薪共 19500元, 主管是 7698
3-WARD 年薪共 15500元, 主管是 7698
4-JONES 年薪共 35701元, 主管是 7839
5-MARTIN 年薪共 16400元, 主管是 7698
6-BLAKE 年薪共 34201元, 主管是 7839
7-CLARK 年薪共 29401元, 主管是 7839
8-KING 年薪共 60001元, 主管是 NULL
9-TURNER 年薪共 18000元, 主管是 7698
10-JAMES 年薪共 11401元, 主管是 7698
11-FORD 年薪共 36001元, 主管是 7566
12-MILLER 年薪共 15601元, 主管是 7782

已選取 12 個資料列.

-- 關閉spool並保存所有操作及結果到"1.LST"檔案裡
SQL> spool off

原程式碼實作

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
SQL> spool 1
SQL> set linesize 100
SQL> set pagesize 30
SQL> select sysdate
2 from dual;

SYSDATE
--------------
17-10-23

SQL> alter session set nls_date_format='yyyy-mm-dd';

已更改階段作業.

SQL> select sysdate
2 from dual;

SYSDATE
----------
2023-10-17

SQL> select substr(sysdate,1,4)||'年'||substr(sysdate,6,2)||'月'||substr(sysdate,9,2)||'日' "今天日期"
2 from dual;

今天日期
----------------------
20231017


SQL> select rownum||'-'||ename||' 年薪共 '||to_char(sal*12+nvl(comm,1))||'元, 主管是 '||nvl(to_char(mgr),'NULL') "Employee Data"
2 from emp;

Employee Data
----------------------------------------------------------------------------------------------------
1-SMITH 年薪共 9601元, 主管是 7902
2-ALLEN 年薪共 19500元, 主管是 7698
3-WARD 年薪共 15500元, 主管是 7698
4-JONES 年薪共 35701元, 主管是 7839
5-MARTIN 年薪共 16400元, 主管是 7698
6-BLAKE 年薪共 34201元, 主管是 7839
7-CLARK 年薪共 29401元, 主管是 7839
8-KING 年薪共 60001元, 主管是 NULL
9-TURNER 年薪共 18000元, 主管是 7698
10-JAMES 年薪共 11401元, 主管是 7698
11-FORD 年薪共 36001元, 主管是 7566
12-MILLER 年薪共 15601元, 主管是 7782

已選取 12 個資料列.

SQL> spool off
  • 本文標題: Oracle大型資料庫系統課程-日期格式及直覺化的報告型表格
  • 本文作者: Error_0x03F7
  • 撰寫於 : 2023-10-17 16:33:56
  • 更新於 : 2023-10-17 18:04:14
  • 本文連結: https://error0x03f7.vercel.app/2023/10/17/Oracle大型資料庫系統課程-日期格式及直覺化的報告型表格/
  • 版權聲明: 本文採用 CC BY-NC-SA 4.0 TW 進行許可。轉載請註明來自 Error_0x03F7 個人網站
留言
此頁目錄
Oracle大型資料庫系統課程-日期格式及直覺化的報告型表格