with t as
(select 8 nm
from dual
union all
select 4 from dual)
select replace(ltrim(max(SYS_CONNECT_BY_PATH('|', ',')), ','), ',', '')
from (select nm, rownum rn from t) t1
connect by level <= nm
and prior rn = rn
and prior dbms_random.value is not null
group by rn;
http://bbs.csdn.net/topics/390793418
select substr(rpad('|',nm+1,'|'),2) from table1
(
SELECT SUBSTR(RPAD(to_char(nm),nm+LENGTH(to_char(nm)),'|'),INSTR(RPAD(to_char(nm),nm+LENGTH(to_char(nm)),'|'),'|',1,1)) nn
FROM dual
)
SELECT nn FROM a测试了一下,对几位数的数字都适用,nm是数字
TRANSLATE (LPAD (deptno, deptno, '|'), '0123456789', '||||||||||')
FROM emp a
(
ID VARCHAR2(100),
NAME VARCHAR2(100)
)select lpad('|',id,'|') from emp