当字符串之间有空白值时,REGEXP_SUBSTR 不起作用
Posted
技术标签:
【中文标题】当字符串之间有空白值时,REGEXP_SUBSTR 不起作用【英文标题】:REGEXP_SUBSTR doesn't work when have blank value between string 【发布时间】:2013-09-23 17:23:06 【问题描述】:想知道如何重写REGEXP_SUBSTR
函数是否可以返回正确的值
select REGEXP_SUBSTR('110001,|A1|1|||||N,A1,1,,,,,N,2T BBA HF LOW COST,HOME FINANCING-i',
'[^,]+',
1,
11)
from dual
预期结果:家庭融资-i
【问题讨论】:
regexp_substr(regexp_replace(col, '(.*?,)10'), '[^,]*')
regex substr skips over empty positions 的副本
【参考方案1】:
你需要调整你的模式来匹配两个逗号([^,]*)(,|$)
之间的emptiness:
with t1(col) as(
select '110001,|A1|1|||||N,A1,1,,,,,N,2T BBA HF LOW COST,HOME FINANCING-i'
from dual
)
select regexp_substr(col, '([^,]*)(,|$)', 1, 11, 'i', 1) as res
from t1
结果:
RES
----------------
HOME FINANCING-i
【讨论】:
这将适用于最后一个位置,但在其他位置示例中选择 regexp_substr(col, '([^,])*(,|$)', 1, 1) 将返回 110001,如何删除“,”?以上是关于当字符串之间有空白值时,REGEXP_SUBSTR 不起作用的主要内容,如果未能解决你的问题,请参考以下文章
Oracle REGEXP_SUBSTR |获取两个分隔符之间的字符串
当字符串中出现不需要的字符时限制 regexp_substr 响应(返回空响应)
当字符串包含 ( 和 ) 时,使用 regexp_substr 提取字符串的一部分