【函式】Oracle的常用字元函式實驗展示(一)

secooler發表於2009-12-26
Oracle提供了眾多實用的字元函式,在眾多的字元函式中常用的並不多,精通常用的幾個字元函式便可遊刃有餘。
透過這個小文兒簡單演示一下常用字元函式的用法,供參考。

1.實驗預備動作
1)建立實驗表T
sec@ora10g> create table t (first_name varchar2(15), family_name varchar2(15), alias_name varchar2(15), mark varchar2(15), ascii_num int);

Table created.

2)初始化一條資料
sec@ora10g> insert into t values ('Secooler ', 'HOU', 'sec', 'H', 72);

1 row created.

sec@ora10g> commit;

Commit complete.

sec@ora10g> select * from t;

FIRST_NAME      FAMILY_NAME     ALIAS_NAME      MARK             ASCII_NUM
--------------- --------------- --------------- --------------- ----------
Secooler        HOU             sec             H                       72

2.CHR函式
CHR函式可以得到數值對應的字元。因為我們採用的是ASCII字符集,所以數字“72”對應的字元便是“H”
sec@ora10g> select chr(ASCII_NUM) chr from t;

CHR
----
H

不得不提的ASCII函式,這個函式可以理解是CHR函式的“反函式”,透過ASCII函式可以得到字元的ASCII字元編碼。
sec@ora10g> select ascii('H') ascii from t;

     ASCII
----------
        72

sec@ora10g> select ascii(mark) ascii from t;

     ASCII
----------
        72

3.CONCAT函式
CONCAT函式與“||”符號的功能類似,就是將兩個字串聯起來。
sec@ora10g> select concat(FIRST_NAME,FAMILY_NAME) "My Name is" from t;

My Name is
------------------------------
Secooler HOU

使用“||”可以實現同樣的效果
sec@ora10g> select FIRST_NAME||FAMILY_NAME "My Name is" from t;

My Name is
------------------------------
Secooler HOU

4.INITCAP函式
INITCAP函式從字面上就可以知道他的功能,即將字串的第一個字母轉換為大寫字母,其餘部分轉換為小寫字母的形式。無論字串初始內容是大寫還是小寫,都會被轉換為統一的形式。
sec@ora10g> select initcap(FIRST_NAME) initcap, initcap(FAMILY_NAME) initcap from t;

INITCAP         INITCAP
--------------- ---------------
Secooler        Hou

5.LOWER和UPPER函式
LOWER和UPPER函式類似INITCAP函式,只不過這裡的LOWER函式會將字串全部轉換為小寫字母,UPPER函式將字串全部轉換為大寫字母
1)LOWER函式演示
sec@ora10g> select lower(FIRST_NAME) lower, lower(FAMILY_NAME) lower from t;

LOWER           LOWER
--------------- ---------------
secooler        hou

2)UPPER函式演示
sec@ora10g> select upper(FIRST_NAME) upper, upper(FAMILY_NAME) upper from t;

UPPER           UPPER
--------------- ---------------
SECOOLER        HOU

6.LPAD和RPAD函式
LPAD和RPAD函式可以完成用特定字元填充字串到指定長度的目的。
1)在FAMILY_NAME左側填充“$”符號,使整個字串的長度為10。
sec@ora10g> select lpad(FAMILY_NAME,10,'$') lpad from t;

LPAD
----------------------------------------
$$$$$$$HOU

2)在FAMILY_NAME右側填充“$”符號,使整個字串的長度為10。
sec@ora10g> select rpad(FAMILY_NAME,10,'$') rpad from t;

RPAD
----------------------------------------
HOU$$$$$$$

3)混合使用,在FAMILY_NAME的左側新增三個“#”符號,同時在其後面新增四個“$”符號。
sec@ora10g> select rpad(lpad(FAMILY_NAME,6,'#'),10,'$') "LPAD and RPAD" from t;

LPAD and RPAD
----------------------------------------
###HOU$$$$

4)如果不指定填充的字元,則預設用空格進行填充
sec@ora10g> select lpad(FAMILY_NAME,10) lpad from t;

LPAD
----------------------------------------
       HOU

7.LTRIM和RTRIM函式
LPAD和RPAD函式目的是填充,LTRM和RTRIM函式目的相反,刪除對應的內容。
1)刪除FIRST_NAME左側出現的“S”字母
這裡為了驗證刪除“所有”左側“S”字母,我們再初始化一條前面包含多個S的內容。
sec@ora10g> insert into t(FIRST_NAME) values ('SSSecooler');

1 row created.

sec@ora10g> select FIRST_NAME, ltrim(FIRST_NAME,'S') ltrim from t;

FIRST_NAME      LTRIM
--------------- ---------------
Secooler        ecooler
SSSecooler      ecooler

可見,在FIRST_NAME欄位左側出現的“S”全部被刪除了。

2)刪除FAMILY_NAME右側出現的“U”字母
sec@ora10g> select FAMILY_NAME, rtrim(FAMILY_NAME,'U') rtrim from t;

FAMILY_NAME     RTRIM
--------------- ---------------
HOU             HO

同理,RTRIM函式也是會完成刪除“所有”字元的目的。這裡不再演示。

3)如果LTRIM和RTRIM函式不使用第二個引數,則實現的功能是去除字串左側(
LTRIM)或右側(RTRIM)出現的空格,這是比較常用的基本功能。

先介紹這七組字元函式,待續ing……

Good luck.

secooler
09.12.26

-- The End --

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/519536/viewspace-623692/,如需轉載,請註明出處,否則將追究法律責任。

相關文章