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)取得字符串“今天天氣很不錯(cuò)”,第3個(gè)字符開始的字符串
select substr( '今天天氣很不錯(cuò)' ,3) from dual;
輸出的結(jié)果為:天氣很不錯(cuò)
2)取得字符串“今天天氣很不錯(cuò)”,第3個(gè)字節(jié)開始的字符串
select substrb( '今天天氣很不錯(cuò)' ,3) from dual;
輸出的結(jié)果為:天天氣很不錯(cuò)
3)取得字符串“今天天氣很不錯(cuò)”,第3個(gè)字符開始2個(gè)字符的字符串
select substr( '今天天氣很不錯(cuò)' ,3,2) from dual;
輸出的結(jié)果為:天氣
4)取得字符串“今天天氣很不錯(cuò)”,第3個(gè)字節(jié)開始2個(gè)字節(jié)的字符串
select substrb( '今天天氣很不錯(cuò)' ,3,2) from dual;
輸出結(jié)果為:天
注:當(dāng)開始位置設(shè)定為負(fù)數(shù)時(shí),是從字符串最后開始檢索的。
與這兩個(gè)函數(shù)類似的還有:
length與lengthb 長(zhǎng)度計(jì)算函數(shù)
select length('天氣') from dual;
輸出:2
select lengthb('你好') from dual;
輸出:4
select length('李四') from ST_TASK t
結(jié)果: 2
select lengthb('李四') from ST_TASK t
結(jié)果: 6
注: 在不同的數(shù)據(jù)庫(kù),因?yàn)樽址牟煌?,LENGTHB得到的值可能會(huì)不一樣。如ZHS16GBK采用 2 個(gè)byte位來(lái)定義一個(gè)漢字。而在UTF8,采用 3 個(gè)byte。這里的oracle數(shù)據(jù)庫(kù)為UTF-8編碼格式