天天看點

oracle 函數大全 之 substr

oracle的substr函數的用法

oracle 函數大全 之 substr

取得字元串中指定起始位置和長度的字元串   substr( string, start_position, [ length ] )

oracle 函數大全 之 substr

如:

oracle 函數大全 之 substr

     substr('This is a test', 6, 2)     would return 'is'

oracle 函數大全 之 substr

     substr('This is a test', 6)     would return 'is a test'

oracle 函數大全 之 substr

     substr('TechOnTheNet', -3, 3)     would return 'Net'

oracle 函數大全 之 substr

     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