[iThome 第七屆鐵人賽 9] SQL語法I: single row function(1)

熱門文章 (Popular Post)

Posted by : Duran Hsieh 1月 06, 2015



在前面幾篇,算是暫時性可以啟動並開始簡單運用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"



--


早上上班,晚上上課。

堅持一下!加油加油!



Leave a Reply

Subscribe to Posts | Subscribe to Comments

- Copyright © Duran Hsieh @ Matsurigoto - Date A Live - Powered by Blogger - Designed by Johanes Djogan -