我有一个 LOG_TAB 表,其中 COLLEC_VAL 列的值在oracle中为Abcd@123|Mnbv@1234|Poiu@1234|Asdf@1234|.......
。这些值不是固定的。我只想在列中保留最新的4个字符串或字符,其余的值将被删除,即 Abcd @ 1234 将被定界符(|)检查删除。
删除第一个后,以下值将可用:
Mnbv@1234|Poiu@1234|Asdf@1234|.......
它将如何检查已经存在4个或大于3个定界符并删除第一个定界符?请帮忙。
答案 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;