Mik*_*ike 1 regex oracle plsql
使用此代码返回管道分隔字符串中的第n个值...
regexp_substr(int_record.interfaceline, '[^|]+', 1, i)
Run Code Online (Sandbox Code Playgroud)
当所有值都存在时,它工作正常
Mike|Male|Yes|20000|Yes所以3rd价值是Yes(正确的)
但如果字符串是
Mike|Male||20000|Yes,第3个值是20000(不是我想要的)
如何判断表达式不跳过空值?
TIA
麦克风
regexp_substr以这种方式工作:
如果occurrence大于1,则数据库将搜索第二次出现,从第一次出现模式后的第一个字符开始,依此类推.此行为与SUBSTR函数不同,后者开始在第一次出现的第二个字符处搜索第二个匹配项.
因此模式[^ |]将查找非管道,这意味着它将跳过连续管道("||")以查找非管道字符.
你可以试试:
select trim(regexp_substr(replace('A|test||string', '|', '| '), '[^|]+', 1, 4)) from dual;
Run Code Online (Sandbox Code Playgroud)
这将取代"|" 使用"|"并允许您根据模式进行匹配[^ |]
| 归档时间: |
|
| 查看次数: |
5771 次 |
| 最近记录: |