regexp_replace
会做的:
select regexp_replace('foobar','(.)','\1 | ') from dual
会给你
f | o | o | b | a | r |
摆脱最后一个小节的简单方法(编辑,遗漏空格):
select substr(regexp_replace('foobar','(.)','\1 | '),1, length('foobar')*4-3) from dual
输出
f | o | o | b | a | r
概念证明(只是为了满足 Raj_te 我真的看不出有什么问题)
with t as
(
select 1 as id, 'foobar' as field1 from dual union all
select 2 as id, 'fooobar' as field1 from dual union all
select 3 as id, 'foooobar' as field1 from dual union all
select 4 as id, 'fooooobar' as field1 from dual union all
select 5 as id, 'foooooobar' as field1 from dual union all
select 6 as id, 'fooooooobar' as field1 from dual union all
select 7 as id, 'foooooooobar' as field1 from dual )
select substr(regexp_replace(field1,'(.)','\1 | '),1, length(field1)*4-3)
from t
order by id;
输出
f | o | o | b | a | r
f | o | o | o | b | a | r
f | o | o | o | o | b | a | r
f | o | o | o | o | o | b | a | r
f | o | o | o | o | o | o | b | a | r
f | o | o | o | o | o | o | o | b | a | r
f | o | o | o | o | o | o | o | o | b | a | r