SUBSTR(c1, n1) 從字符串中指定的開始位置孵稽,取得后面的字符串
SUBSTRB(c1 , n1)
SUBSTR(c1, n1, n2 ) 從字符串中指定的開始位置氮凝,取得指定字符數(shù)的字符串
SUBSTRB(c1 ,n1,n2 ) 從字符串中指定的開始位置,取得指定字節(jié)數(shù)的字符串
【參數(shù)】c1是字符串,n1是開始位置述暂,n2是字符/節(jié)數(shù)
從上面的就是可以看出substr()和substrb()的不同之處怒炸,在于substr()是取得字符串的字符數(shù),substrb()是取得字符串的字節(jié)數(shù)邻奠。
例如:
1)取得字符串“今天天氣很不錯”,第3個字符開始的字符串
select substr( '今天天氣很不錯' ,3) from dual;
輸出的結果為:天氣很不錯
2)取得字符串“今天天氣很不錯”为居,第3個字節(jié)開始的字符串
select substrb( '今天天氣很不錯' ,3) from dual;
輸出的結果為:天天氣很不錯
3)取得字符串“今天天氣很不錯”碌宴,第3個字符開始2個字符的字符串
select substr( '今天天氣很不錯' ,3,2) from dual;
輸出的結果為:天氣
4)取得字符串“今天天氣很不錯”,第3個字節(jié)開始2個字節(jié)的字符串
select substrb( '今天天氣很不錯' ,3,2) from dual;
輸出結果為:天
注:當開始位置設定為負數(shù)時蒙畴,是從字符串最后開始檢索的贰镣。
與這兩個函數(shù)類似的還有:
length與lengthb 長度計算函數(shù)
select length('天氣') from dual;
輸出:2
select lengthb('你好') from dual;
輸出:4
select length('李四') from ST_TASK t
結果: 2
select lengthb('李四') from ST_TASK t
結果: 6
注: 在不同的數(shù)據(jù)庫,因為字符集的不同膳凝,LENGTHB得到的值可能會不一樣碑隆。如ZHS16GBK采用 2 個byte位來定義一個漢字。而在UTF8蹬音,采用 3 個byte干跛。這里的oracle數(shù)據(jù)庫為UTF-8編碼格式