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

secooler發表於2009-12-27
此文是《【函式】Oracle的常用字元函式實驗展示(一)》的姊妹篇。
參考地址:http://space.itpub.net/519536/viewspace-623692

GO ON ...

8.REPLACE函式
REPLACE函式完成替換功能,如果不指定替換的內容將會刪除與之匹配的內容。
1)刪除FIRST_NAME欄位中出現的“cool”字串
sec@ora10g> select FIRST_NAME, replace(FIRST_NAME,'cool') replace from t;

FIRST_NAME      REPLACE
--------------- ---------------
Secooler        Seer

此時Secooler已經變成了“先知”(Seer):)。

2)將FIRST_NAME欄位中的“cool”替換為“****”符號
sec@ora10g> select FIRST_NAME, replace(FIRST_NAME,'cool','****') replace from t;

FIRST_NAME      REPLACE
--------------- -----------------------------------------------------
Secooler        Se****er

9.SUBSTR函式
使用SUBSTR函式可以得到字串的一個子串。
1)得到FIRST_NAME欄位的前三個字元
sec@ora10g> select FIRST_NAME, substr(FIRST_NAME,1,3) substr from t;

FIRST_NAME      SUBSTR
--------------- ------------
Secooler        Sec

2)從FIRST_NAME欄位的第三個字元開始連續取4個字元。
sec@ora10g> select FIRST_NAME, substr(FIRST_NAME,3,4) substr from t;

FIRST_NAME      SUBSTR
--------------- ----------------
Secooler        cool

的確很“cool”吧:)

3)從相反的方向獲得子字串
下面的SQL中substr函式的第二個引數是“-6”,表示從字串後面向前數第6個字元開始,再讀取4個字元。這裡構造的結構和上面的結果相同,可謂殊途同歸是也。
這裡之所以使用到了rtrim函式,是為了消除字串尾部空格對結果的影響。
sec@ora10g> select FIRST_NAME, substr(rtrim(FIRST_NAME),-6,4) substr from t;

FIRST_NAME      SUBSTR
--------------- ----------------
Secooler        cool

4)SUBSTR函式的第三個引數可以為空,表示從擷取開始的位置一直到字串尾部的意思。
sec@ora10g> select FIRST_NAME, substr(FIRST_NAME,3) substr from t;

FIRST_NAME      SUBSTR
--------------- ----------------------------------------------------
Secooler        cooler

10.TRANSLATE函式
1)將“H”翻譯成“S”、將“O”翻譯成“e”、將“U”翻譯成“c”
sec@ora10g> select FAMILY_NAME, translate(FAMILY_NAME,'HOU','Sec') translate from t;

FAMILY_NAME     TRANSLATE
--------------- ----------------------------------------------------
HOU             Sec

2)想一想下面的SQL為什麼沒有把“Secooler”轉換為“Shengwen”?體會一下這個“翻譯”過程的細節之處。
sec@ora10g> select FIRST_NAME, translate(FIRST_NAME,'Secooler','Shengwen') from t;

FIRST_NAME      TRANSLATE(FIRST_NAME,'SECOOLER','SHENGWEN')
--------------- ----------------------------------------------------
Secooler        Shennwhn

透過自己雙手和思考得到的才是永恆,這裡先不道破鳥~~

11.INSTR函式
語法是:INSTR (string , substring [, position [, occurrence ] ])
INSTR函式可以得到子字串(當然包含單個字元)在字串中的位置,返回的是數字。
1)得到字母“o”在FIRST_NAME欄位第一次出現的位置
sec@ora10g> select FIRST_NAME, instr(FIRST_NAME,'o') instr from t;

FIRST_NAME           INSTR
--------------- ----------
Secooler                 4

2)從字串的第5個字元開始查詢,第一次出現字母“o”的位置
sec@ora10g>  select FIRST_NAME, instr(FIRST_NAME,'o',5) instr from t;

FIRST_NAME           INSTR
--------------- ----------
Secooler                 5

3)從字串的第1個字元開始查詢,第二次出現字母“o”的位置
sec@ora10g> select FIRST_NAME, instr(FIRST_NAME,'o',1,2) instr from t;

FIRST_NAME           INSTR
--------------- ----------
Secooler                 5

12.LENGTH函式
參考《【差異】LENGTH與VSIZE的區別演示》http://space.itpub.net/519536/viewspace-623537

13.小結
透過兩篇小文兒給大家介紹了12個Oracle常用字元函式。善用函式帶給我們的便利不可小視,也許不經意間在使用這些函式進行簡單組合之後就會給我們帶來無限的快感。

Good luck.

secooler
2009.12.27

-- The End --

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

相關文章