在前面幾篇,算是暫時性可以啟動並開始簡單運用oracle 資料庫,但在專案中,我仍舊感受到不安,
對於oracle的認識與管理還算太淺,未來遇到問題可能會相當苦惱。
為了讓自己能夠更靈活管理oracle database,幾個月前我去報名上課了`,
雖然金額不少,且不知道未來證照有沒有用,但本身的目地是增進自己的技能,就沒有太在意了。
10g課程部分,從SQL expert開始,要上到AW1與AW2,在挑戰鐵人賽的同時也一起複習整個課程,故後續三篇將記錄oracle SQL課程中較重要或工作上常用到的語法。
若有錯誤,煩請大家指教。
----------------------------------- 我是分隔線-----------------------------------
SQL functions
oracle 中提供了不少functions提供使用者使用,若對於這些function熟悉,在撰寫程式或SQL語法,進行查詢資料的時候可以省下不少力氣。
過去的我就曾經為了統計每些資料,寫了許多SQL,在適當使用function可以有效減少SQL語法的複雜度。
SQL functions **** 可分成 Single-row function與Multiple-row functions,而我們這邊將先介紹Single-row function。
使用者將數個的參數帶入single-row function後,會將結果回傳。帶入的參數可以為使用者定義的數值、欄位名稱、表示式或變量值。
single-row function可以配合select、where與order by使用,也能巢狀使用,非常方便。
以下將介紹一般常用字元的functons
一、LOWER:將字串轉換小寫
LOWER(user_name)
二;UPPER:將字串轉換大寫
UPPER(user_name)
三、INITCAP:將字串第一個字轉成大寫,其他轉換成小寫
INITCAP(user_name)
四、CONCAT:連接兩個字串,與(||)用法相同
CONCAT('Hello','World') --回傳'HelloWorld '
五、SUBSTR:切割字串
SUBSTR('HellowWorld',1,5) --回傳'Hello'
六、LENGTH:
LENGTH('HellowWorld') --回傳10
七、INSTR:
INSTR('HellowWorld','W') --回傳6
八、LPAD:
LPAD(salary,'5','@') --回傳@@@@@36000
九、RPAD:
RPAD(salary,'5','@') --回傳36000@@@@@
十、TRIM:
TRIM('H' FROM 'HelloWorld') --回傳elloWorld
十一、REPLACE:
REPLACE('HELLO','HELLO','World') --回傳World
以下將介紹一般數值的functons
一、ROUND 四捨五入
ROUND(45.926, 2) --回傳45.93
二、TRUNC 無條件捨去
TRUNC(45.926, 2) --回傳45.92
三、MOD 餘數
MOD(1600,300) --回傳100
補充:
在oracle中,若要使用SELECT測試語法又沒有資料表,可以使用DUAL來下SQL語法,而不用另外在新增資料表。
比方說:
select ROUND(45.923,2) from dual
即會回傳資料表結果。
另外,個人常用的語法還有
一、IS NULL :配合where 用來找哪個欄位是NULL,進行資料操作。
但如果有NVL 或NVL2等 single-row function,則會更加方便,下一篇將會介紹。
二、INSERT 與SELECT的綜合運用,用於調整、新增大量或特定資料。
看似簡單的語法,運用的頻率確很高。
INSERT INTO [dbo].[Tcode01]
([SEQ],[單位代號],[單位名稱],[主管],[電話])
SELECT [SEQ],[單位代號],[單位名稱],[主管],[電話]
FROM [dbo].[Tcode01] WHERE 單位代號 = "11"
--
早上上班,晚上上課。
堅持一下!加油加油!