当字符串之间有空白值时,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 提取字符串的一部分

Oracle 正则表达式函数-REGEXP_SUBSTR 使用例子

REGEXP_SUBSTR - 如何“避免”字符串中的括号

设置空白和空值时,django 表单字段会引发错误