删除第n个定界符“ |”之前的字符或字符串

时间:2018-07-31 08:53:02

标签: oracle

我有一个 LOG_TAB 表,其中 COLLEC_VAL 列的值在oracle中为Abcd@123|Mnbv@1234|Poiu@1234|Asdf@1234|.......。这些值不是固定的。我只想在列中保留最新的4个字符串或字符,其余的值将被删除,即 Abcd @ 1234 将被定界符(|)检查删除。

删除第一个后,以下值将可用: Mnbv@1234|Poiu@1234|Asdf@1234|.......

它将如何检查已经存在4个或大于3个定界符并删除第一个定界符?请帮忙。

2 个答案:

答案 0 :(得分:1)

尝试一下

update log_tab set collec_val = substr(collec_val, instr(collec_val, '|', -1, 4)+1) 

答案 1 :(得分:0)

这将帮助您所有列在表上进行尝试,它向您展示emp表数据示例:

select SUBSTR(listagg(ename,'|') within group (order by ename),instr(listagg(ename,'|') within group (order by ename),'|',-1,4)+1) employee_name from emp;