Oracle 通過Substr和Instr實現制定字符的字符串的截取

在開發項目的過程中遇到了這樣的一個問題,就是從遠程服務器取到的數據中是由一段規則的字符串組成的,但是你想要的還不是這段字符串,是其中的一段字符串,那就的使用Oracle強大的函數了,我的問題是這樣的,我要把如下所示紅框內的那段字符串截取出來,就是說截取第一個"-"和第二個“-”之間的字符串出來:

一:如圖所示:



二:新建數據表:

  1. CREATE TABLE test (name VARCHAR2 (32));  
CREATE TABLE test (name VARCHAR2 (32));

三:給表中插入數據:


  1. insert into test values('CA-CA1344-A-11OCT141250-D');  
  2. insert into test values('JD-JD693-A-11OCT141105-D');  
insert into test values('CA-CA1344-A-11OCT141250-D');
insert into test values('JD-JD693-A-11OCT141105-D');

四:查詢結果:

方式一:

  1. select substr(name,instr(name,'-',1)+1,instr(name,'-',instr(name,'-',1)+1)-instr(name,'-',1)-1) from test;  
select substr(name,instr(name,'-',1)+1,instr(name,'-',instr(name,'-',1)+1)-instr(name,'-',1)-1) from test;

方式二:


  1. select substr(name,instr(name,'-',1,1)+1,instr(name,'-',1,2)-1-instr(name,'-',1,1)) from test;  
select substr(name,instr(name,'-',1,1)+1,instr(name,'-',1,2)-1-instr(name,'-',1,1)) from test;

五:結果如下:



六:接下我們再寫一下,取第二個"-"到第三個"-"之間的字符串的方法:


  1. select substr(name,instr(name,'-',2,2)+1,instr(name,'-',2,3)-1-instr(name,'-',2,2)) from test;  
select substr(name,instr(name,'-',2,2)+1,instr(name,'-',2,3)-1-instr(name,'-',2,2)) from test;


七:結果如下:

發佈了73 篇原創文章 · 獲贊 8 · 訪問量 23萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章