求教各位大神,現在要取部分資訊,資訊內容格式如下, >安徽省>合肥市>肥西縣>實驗小學>一一班,資訊中:安徽省是第一級,合肥市是第二級,肥西縣是第三級,實驗小學是第四級,一一班是第五級,每級之間用符號 > 隔開。現在我想分別取第三級和第四級 內容,如何寫腳本? 注 :每級長度不一樣。比如第二級可能有的輸入 合肥市三個字,也有的輸入合肥兩個字,不帶市。
uj5u.com熱心網友回復:
select regexp_substr(s,'[^>]+',1,3),regexp_substr(s,'[^>]+',1,4) from(select '>安徽省>合肥市>肥西縣>實驗小學>一一班' s from dual)
uj5u.com熱心網友回復:
select substr(tab,instr(tab,'>',1,3)+1,instr(tab,'>',1,4)-1-instr(tab,'>',1,3)) 第三級,substr(tab,instr(tab,'>',1,4)+1,instr(tab,'>',1,5)-1-instr(tab,'>',1,4)) 第四級
from (select '>安徽省>合肥市>肥西縣>實驗小學>一一班' tab from dual);
uj5u.com熱心網友回復:
chengccy給出的查詢是正確的,ORACLE的正則運算式可以很容易的解決這個問題。REGEXP_SUBSTR有四個引數,第1個引數就是要決議的字串,第2個引數是正則運算式,這里[^>]+表示不包含字符“>”連續的字串,第三個引數是從第幾字符開始,這里都是1,就是整個字串,第4個引數是表示第幾個符合條件的正則運算式。
執行下面的查詢可以看到效果。
SELECT regexp_substr('>安徽省>合肥市>肥西縣>實驗小學>一一班', '[^>]+', 1, 1) FROM dual;
SELECT regexp_substr('>安徽省>合肥市>肥西縣>實驗小學>一一班', '[^>]+', 1, 2) FROM dual;
SELECT regexp_substr('>安徽省>合肥市>肥西縣>實驗小學>一一班', '[^>]+', 1, 3) FROM dual;
SELECT regexp_substr('>安徽省>合肥市>肥西縣>實驗小學>一一班', '[^>]+', 1, 4) FROM dual;
SELECT regexp_substr('>安徽省>合肥市>肥西縣>實驗小學>一一班', '[^>]+', 1, 5) FROM dual;
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/74945.html
標籤:開發
