oracle11中的char_function
真是受不了字元函式的折磨了, l_Str := Trim(Rtrim(Replace(Replace(p_Str, ';', ','), ' ', ''), ',')) , LV_TEMP := SUBSTR(LV_STR, 0, INSTR(LV_STR, FV_SPLITER) - 1)
SUBSTR(LV_STR, INSTR(LV_STR, FV_SPLITER) + 1,
LENGTH(LV_STR));每次看到像這樣幾個字元函式一起來襲,然後我就暈了!所以我要把它詳詳細細的記下來!
就平時接觸的字符集函式來說,我用到最多的應該是substr了,所以從它說起吧!
1.SUBSTR
substr(string,start_position,subtract_length)
select substr('56@7325@1400@',1,3) from dual;-------56@
可以看出來substr只是單純的實現從第幾位開始擷取,然後擷取幾位。
select regexp_substr('56@7325@1400@','[[:alnum:]]+',1,2) from dual;-----------7325
regexp_substr('56@7325@1400@','[[:alnum:]]+',1,2) 各引數意義:源字符集,匹配的字符集,開始匹配的位置,第幾次匹配,__modifier :模式('i'不區分大小寫進行檢索;'c'區分大小寫進行檢索。預設為'c'。)
regexp_substr則是傳說中的正則分割,可以實現將匹配的字元與前匹配字元之間的字元擷取出來。
2.INSTR
select instr('56@7325@1400@',0,1,2) from dual;------12
各引數意義:源字符集,匹配的字符集,開始匹配的位置,第幾次匹配,結果為該匹配的字元所在的位置號
select regexp_instr('56@7325@1400@','[[:digit:]]+',1,3) from dual;------4
各引數意義:源字符集,匹配的字符集,開始匹配的位置,第幾次匹配,結果為該匹配的字元所在的位置號(還有return_option以及match_parameter等引數,一般預設)
REGEXP_INSTR實現的功能與INSTR類似,不同的是REGEXP_INSTR用一個匹配模式代替了具體的字串,這樣就提供了更大的靈活性。
順帶感受一下正規表示式的威力:
select regexp_substr('56@7325@1400@1','[[:digit:]]$',1,2) from dual;-----------NULL
select regexp_substr('56@7325@1400@1','[[:digit:]]',1,2) from dual;------------6
select regexp_substr('56@7325@1400@1','[[:digit:]]+',1,2) from dual;-----------7325
select regexp_instr('56@7325@1400@1','[[:digit:]]$',1,1) from dual;-----------14
select regexp_instr('56@7325@1400@1','[[:digit:]]',1,3) from dual;------------4
select regexp_instr('56@7325@1400@1','[[:digit:]]+',1,2) from dual;-----------1,2,3,4對應的分別是1,4,9,14
[[:alnum:]]+ 表示一個或多個字元
[[:alnum:]]* 表示匹配0個或者多個字母或數字字元
[[:digit:]]+$ 表示匹配1個或者多個數字結尾的字元
.^代表開始,*表示出現0次或多次,+表示出現1次或多次,[:digit:]代表0-9的純數字(還有$代表以什麼結尾,如果是[[:digit:]]+$代表以數字結尾)。
3.REPLACE
select replace ('56@7325@1400@1','@',1)from dual;-----56173251140011
select regexp_replace ('56@7325@1400@1','[^[:alnum:]]',1)from dual;-----56173251140011
select regexp_replace ('56@7325@1400@1','[[:punct:]]',1)from dual;-----56173251140011
select regexp_replace ('56@7325@1400@1','[[:digit:]]',1)from dual;-----11@1111@1111@1
select regexp_replace ('56@7325@1400@1','[[:alnum:]]+',1)from dual;-----1@1@1@1
select regexp_replace ('56@7325@1400@1','[[:alnum:]]*',1)from dual;-----11@11@11@11
[[:alpha:]] 任何字母。
[[:digit:]] 任何數字。
[[:alnum:]] 任何字母和數字。
[[:space:]] 任何白字元。
[[:upper:]] 任何大寫字母。
[[:lower:]] 任何小寫字母。
[[:punct:]] 任何標點符號。
[[:xdigit:]] 任何16進位制的數字,相當於[0-9a-fA-F]。
4.TRIM
select LENGTH(trim (trailing from ' 123 ')) from dual;----4
select LENGTH(trim (leading from ' 123 ')) from dual;---7
使用“TRAILING”引數可以完成字串尾部空格的刪除功能;而“LEADING”引數正好相反,完成字串頭部空格的刪除功能。
select ltrim ('xxxx123xxx','x')from dual;-------123xxx
SELECT RTRIM('45123321HELLO===321', '123') FROM DUAL;-----45123321HELLO===
SELECT LTRIM('123321HELLO===', '123') FROM DUAL;-----HELLO===
5.LPAD
SELECT LPAD('xxxx123xxx',10,'*************')FROM DUAL;-----**********xxxx123xxx
SELECT LPAD('xxxx123xxx',6,'*************')FROM DUAL;------xxxx12
引數意義:源字符集,要返回的長度,被填充進去的字元
最後吼吼:l_Str := Trim(Rtrim(Replace(Replace(p_Str, ';', ','), ' ', ''), ',')) 所以這段字串的意思就是:去掉p_str中的空格,然後將分號改成逗號,然後從右邊擷取左右的空格之後再做處理!呼呼。。。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/30018455/viewspace-1377382/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Oracle11新特性——虛擬列Oracle
- oracle11 密碼過期問題Oracle密碼
- Oracle11新特性——虛擬列(二)Oracle
- Oracle11新特性——PLSQL新特性(七)OracleSQL
- Oracle11新特性——PLSQL新特性(六)OracleSQL
- Oracle11新特性——PLSQL新特性(五)OracleSQL
- Oracle11新特性——PLSQL新特性(四)OracleSQL
- Oracle11新特性——PLSQL新特性(三)OracleSQL
- Oracle11新特性——PLSQL新特性(二)OracleSQL
- Oracle11新特性——PLSQL新特性(一)OracleSQL
- Oracle11新特性——撤銷事務(一)Oracle
- Oracle11新特性——分割槽功能增強Oracle
- Oracle11新特性——撤銷事務(三)Oracle
- Oracle11新特性——撤銷事務(二)Oracle
- Oracle11新特性——分割槽功能增強(五)Oracle
- Oracle11新特性——分割槽功能增強(四)Oracle
- Oracle11新特性——行列轉換語句(二)Oracle
- Oracle11新特性——行列轉換語句(一)Oracle
- Oracle11新特性——分割槽功能增強(三)Oracle
- Oracle11新特性——分割槽功能增強(二)Oracle
- Oracle11新特性——分割槽功能增強(一)Oracle
- Oracle11新特性——備份恢復功能增強Oracle
- Oracle11新特性——SQL快取結果集(五)OracleSQL快取
- Oracle11新特性——SQL快取結果集(三)OracleSQL快取
- Oracle11新特性——備份恢復功能增強(六)Oracle
- Oracle11新特性——備份恢復功能增強(五)Oracle
- Oracle11新特性——備份恢復功能增強(四)Oracle
- Oracle11新特性——備份恢復功能增強(三)Oracle
- Oracle11新特性——備份恢復功能增強(二)Oracle
- Oracle11新特性——備份恢復功能增強(一)Oracle
- Oracle11新特性——備份恢復功能增強(十)Oracle
- Oracle11新特性——備份恢復功能增強(九)Oracle
- Oracle11新特性——備份恢復功能增強(八)Oracle
- Oracle11新特性——備份恢復功能增強(七)Oracle
- Oracle11新特性——備份恢復功能增強(十一)Oracle
- Oracle11新特性——PLSQL函式快取結果(一)OracleSQL函式快取
- Oracle11新特性——線上操作功能增強(七)Oracle
- Oracle11新特性——線上操作功能增強(六)Oracle