對于類似于 111/222/333/222/333/222 的字串,現在要把里面的222抓取出來,實際情況是并不知道該字串中有幾個222,可能是三個,可能是5個,有沒有方法對這種未知的將222全部抓取出來。
uj5u.com熱心網友回復:
用pl/sql回圈就可以咯uj5u.com熱心網友回復:
有點沒懂什么意思,抓取出來是指這個列中有222的值都查出來?查出來是查出這一列值還是只查有幾個222?uj5u.com熱心網友回復:
用模糊匹配 col like '%222%' 或者函式 instr(col,'222')>0,這樣的?uj5u.com熱心網友回復:
怎么個抓法?uj5u.com熱心網友回復:
是這樣的,實際的應用是類似于'name:"123";code:"234";name:"345",code:"456"'這樣的字串,然后從中取出name后面的值,我目前是用substr和instr取出指定的,比如第一個name后面的值,但具體字串中有多少個name未知,所以想請教一下有什么方法。
uj5u.com熱心網友回復:
查出有多少個固定字串(length(col)-length(replace(col,'name','')))/length('name')
uj5u.com熱心網友回復:
這樣把字串打衡,如果還需要截取或者判斷話,依葫蘆畫瓢就可以了吧。with tmp as
(select 'name:"123";code:"234";name:"345";code:"456"' as p_str from dual)
select regexp_substr(tmp.p_str, '[^;]+', 1 , level)
from tmp
where 1 = 1
connect by level <= regexp_count(tmp.p_str, '[^;]+');
uj5u.com熱心網友回復:
with xx as(select 'name:"123";code:"234";name:"345";code:"456"' as col from dual)
select regexp_substr(regexp_substr(col,'[^;]+',1,level),'[^:]+',1,2)
from xx
connect by level <= regexp_count(col,'[^;]+')
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/19528.html
標籤:基礎和管理
上一篇:截取字串 求助大神~!
