oracle中length()、lengthb()、replace()、regexp_substr()函式使用
阿新 • • 發佈:2018-11-03
oracle中length()、lengthb()、replace()、regexp_substr()函式使用
1. length()、lengthb():
lengthb(string)獲取string所佔的位元組長度:返回字串的長度,單位是位元組
length(string)獲取string所佔的字元長度:返回字串的長度,單位是字元
對於單位元組字元,length()和lengthb()是一樣的.
如可以用length(‘string’)=lengthb(‘string’)
注:一個漢字在Oracle資料庫裡佔多少位元組跟資料庫的字符集有關,UTF8時,長度為三。
例:
select lengthb('我') from dual /*輸出:3(表示我的資料庫中一個漢字佔3個位元組)*/
select lengthb('我,a,b,c') from dual /*輸出:9*/
select length('我,a,b,c') from dual /*輸出:7*/
---------------------
[原作者:阿杜_ardo]
2. replace():
replace()
格式如下所示:
REPLACE ( char, search_string [, replace_string])
如果沒有指定replace_string 變數的值,那麼當發現search_string 變數的值時,就將其刪除。
例:
select replace('我,a,b,c',',','&') from dual /*指定替換值時輸出:我&a&b&c*/
select replace('我,a,b,c',',') from dual /*不指定替換值時輸出:我abc。(不指定時就將被替換值刪除)*/
例項:獲取字串"aa,bb,cc,dd,ee,"的“長度”也就是有幾個“值”
select length('aa,bb,cc,dd,ee,') val1 from dual /*先獲取總長度*/
select length(replace('aa,bb,cc,dd,ee,',',')) val2 from dual /*然後用replace()獲得去掉逗號的結果並獲取其長度*/
select length('aa,bb,cc,dd,ee,')-length(replace('aa,bb,cc,dd,ee,',',')) val from dual /*兩個長度相減即可獲取我們要的結果*/
3.regexp_substr():
功能:在目標字串中獲取符合正則表示式的字串。
語法:
REGEXP_SUBSTR(source_char, pattern [, position [, occurrence [, match_parameter ]]])
source_char:目標字串
pattern:正則表示式
position:(可選)搜尋開始位置,預設為1
occurrence:(可選)第n個匹配位置,預設為1
match_parameter:(可選)是取值範圍
- i:大小寫不敏感;
- c:大小寫敏感;
- n:點號 . 不匹配換行符號;
- m:多行模式;
- x:擴充套件模式,忽略正則表示式中的空白字元。
例:
select regexp_substr('我,aa,BB,cc,','[^,]+',1,3,'c') from dual /*輸出:BB (正則表示式意思是以逗號為分割標準)*/