關於字元函式的一些應用總結

Diy_os發表於2015-04-05
字元函式接受字元引數,一般來說可以用於任意表示式,字元函式以某種方式處理,給使用者返回結果。下面總結了一些常用的字元函式: 
SQL> select * from v$version where rownum<2;


BANNER
--------------------------------------------------------------------------------


Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - Production

1.ASCII() 和 CHR()
ASCII(x)用於獲得字元x的ascii碼,CHR()用於獲得ascii碼為x的字元:==>為互逆過程
SQL> select ascii('a'),ascii('A'),ascii('z'),ascii('Z'),ascii(0) from dual;


ASCII('A') ASCII('A') ASCII('Z') ASCII('Z')   ASCII(0)
---------- ---------- ---------- ---------- ----------
        97         65        122         90         48
SQL> select CHR(97),CHR(65),CHR(122),CHR(90),CHR(48) from dual;


CH CH CH CH CH
-- -- -- -- --
a  A  z  Z  0

2.CONCAT()
CONCAT(x,y)函式用於將y新增到x之後,該函式返回得到的是字串:
SQL> select concat(id,name) from tt where rownum=1 ORDER BY ID;


CONCAT(ID,NAME)
--------------------------------------------------------------------------------


6hong


這個函式和連字元||功能相同:
SQL> select id||name from tt where rownum=1 order by id;


ID||NAME
--------------------------------------------------------------------------------


6hong
3.INITCAP()
用於將x中的每個單詞的字母首字母轉換成大寫:
SQL> select initcap(id)||' '||initcap(name) from tt where rownum=1 order by id;


INITCAP(ID)||''||INITCAP(NAME)
--------------------------------------------------------------------------------
6   Hong
4.INSTR()
instr(x,fing_string,[,start][,occurrence])用於在x中查詢find_string,並返回find_string所在的位置,其中start是可選引數,表明x是從哪個位置開始查詢,還可以用可選引數occurrence說明返回find_string第幾次出現的位置:
<1>不帶引數
SQL> select name,instr(name,'I') from diy;

NAME                                     INSTR(NAME,'I')
---------------------------------------- ---------------
AIAIAIAIAIAIAIAI                                       2

<2>從開頭第二次出現字母I開始:
SQL> select name,instr(name,'I',1,2) from diy;


NAME                                     INSTR(NAME,'I',1,2)
---------------------------------------- -------------------
AIAIAIAIAIAIAIAI                                           4
5.LENGTH()
用於獲取length(x)函式中字元x的個數:
SQL> select length(name) from diy;


LENGTH(NAME)
------------
          16
6.LOWER()和UPPER()
lower(x)函式用於將x中的字母轉換成小寫,upper(x)函式將x中的字母轉換成大寫:
SQL> select upper(name),lower(name) from diy;


UPPER(NAME)                              LOWER(NAME)
---------------------------------------- ---------------------------------------
-
AIAIAIAIAIAIAIAI                         aiaiaiaiaiaiaiai

7.LPAD()和RPAD()
lpad(x,width[,pad_string])函式用於在x的左邊補齊空格,使x的總長度達到width個字元。如果在pad_string引數中指定了一個字串,那麼就使用這個字元重複的填充x左邊的空位,以補齊x的長度,補齊後字串作為結果返回,同理,rpad(x,width[,pad_string])函式用於在x的右邊補齊字串:
SQL> select rpad(name,10,'.'),lpad(name,10,'.') from wang where rownum=1;


RPAD(NAME,10,'.')
 LPAD(NAME,10,'.')
--------------------------------------------------------------------------------
 -------------------------------------------------------------------------------
-
WANG......
 ......WANG
8.LTRIM()和RTRIM()和TRIM()
ltrim(x[,trim_string])函式用於從x的左邊擷取一些字元,該函式還可以用可選的引數trim_string來指定要截去的字元,如果沒有指定trim_string引數,預設情況下截去的是空格。同理,rtrim(x[,trim_string])函式用於從x的右邊擷取一些字元,trim(x[,trim_string])函式用於從x的左右邊擷取一些字元

SQL> select rtrim('diy  os!           ') from dual;


RTRIM('DIYOS!')
----------------
diy  os!


SQL> select rtrim('diy  os!00000000','0') from dual;


RTRIM('DIYOS!000
----------------
diy  os!
SQL> select trim('0'from'00000000diy  os00000000') from dual;


TRIM('0'FROM'0
--------------
diy  os
9.NVL()
nvl(x,value)用於將空值轉換成一個已知的值,如果x為空,返回value,否則返回x:
SQL> select * from wang;


NAME                 ID
------------ ----------
                      2
WANG                  1


SQL> select id,nvl(name,'the name is null') from wang;


        ID NVL(NAME,'THENAMEISNULL')
---------- --------------------------------
         2 the name is null
         1 WANG
10.NVL2()
nvl2(x,value1,value2)中,如果x為非空,返回value1,否則返回value2:
SQL> select * from wang;


NAME                 ID
------------ ----------
                      2
WANG                  1

SQL> select id,nvl2(name,'the name is not null','the name is null') from wang;


        ID NVL2(NAME,'THENAMEISNOTNULL','THENAMEISN
---------- ----------------------------------------
         2 the name is null
         1 the name is not null

11.REPLACE()
repSQL> select replace(name,'WANG','diy') from wang where id=1;     ==>注意這裡的search_string,大小寫一定要和表裡的一致
lace(x,search_string,replace_string)用於在x中查詢search_string,並將其替換成replace_string:

REPLACE(NAME,'WANG','DIY')
------------------------------------
diy

12.SOUNDEX()
soundex(x)用於獲得包含x發音的一個字串,該函式用於對英文拼寫不同但發音相識的單詞進行比較。
SQL> select name from wang where soundex(name) = soundex(
  2  'whyte');


NAME
------------
white
是不是很有意思!
13.SUBSTR()
SUBSTR(x,start[,length])用於從x中取得的從start位置開始的一個字串,還可以使用可選引數length指定字串的長度:
<1>用於表中的列:
SQL> select * from diy;


NAME
----------------------------------------
AIAIAIAIAIAIAIAI


SQL> select substr(name,15) from diy;


SUBSTR(NAME,15)
------------------------------------------------
AI


SQL> select substr(name,15,2) from diy;


SUBSTR(NAME,15,2
----------------
AI

<2>用於任意表示式: 
SQL> select substr('wangdiywaNBdiy',10,2) from diy;


SUBS
----
NB

<3>也可用於函式的任意組合:
SQL> select lower(substr('wangdiywaNBdiy',10,2)) from diy;


LOWE
----
nb


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

相關文章