oracle的substr函數的用法
取得字元串中指定起始位置和長度的字元串 substr( string, start_position, [ length ] )
如:
substr('This is a test', 6, 2) would return 'is'
substr('This is a test', 6) would return 'is a test'
substr('TechOnTheNet', -3, 3) would return 'Net'
substr('TechOnTheNet', -6, 3) would return 'The'
select substr('Thisisatest', -4, 2) value from dual 結果是 te
select substr('emros',-3,1) value from dual 結果是 r
substr('abcde',-6) = null
substr('abcde',-5) = 'abcde'
substr('abcde',-4) = 'bcde'
substr('abcde',-3) = 'cde'
substr('abcde',-2) = 'de'
substr('abcde',-1) = 'e'
substr('abcde',-0) = 'abcde'
補充說明:
substr,substrb均為字元串截取函數,都帶有三個參數,第一個參數為所要截取的字元串,第二個參數為strart(索引均從1開始),第三個參數為length。
看下面的例子:
SQL> select substr('abcdef',3,4) from dual;
----
cdef
SQL> select substrb('abcdef',3,4) from dual;
----
cdef
再看下面的例子:
SQL> select substr('今天是個好日子',3,5) from dual;
----------
是個好日子
SQL> select substrb('今天是個好日子',3,5) from dual;
-----
天是
結論是substr是按照字數來算的,而substrb()是按照位元組來算的。
總結:對于字母來說,substr與substrb作用時一樣的,但對于漢字來說,substr是按字數來取值,而substrb是按位元組來取值,當所取長度為奇數時,則自動舍棄最後一位位元組。
類似的還有,
length與lengthb 長度計算函數
select length('你好') from dual ----output:2
select lengthb('你好') from dual ----output :4
instr與instrb 字元串查找函數 instr(原字元串,查的字元串,起始位置,第幾個比對) 傳回字元串位置,找不到傳回0 .
select instr('日日花前長病酒','花前',1,1) from dual ----output:3
select instrb('日日花前長病酒','花前',1,1) from dual ----output:5