我有一个复杂的需求,但我会尽量保持简单,并用我的大脑来满足我的基本需求。
我有一个表,TABLE1,有两列,ID(INTEGER)
,LVL_CNT(INTEGER)
& CLOB_COLUMN(CLOB)
。 CLOB_COLUMN
将有一个select语句。以下是每列中保存的值以显示示例。
ID = 1 LVL_CNT = 10 CLOB_COLUMN将具有如下脚本:
SELECT 'ID',
'Name',
'Description',
'Group',
'Level Count',
'Usage',
'Snapshot Date',
'Conformed Hierarchy',
'Level Name:',
'Level Name:',
'Level Name:',
'Level Name:',
'Level Name:',
'Level Name:',
'Level Name:',
'Level Name:',
'Level Name:',
'Level Name:
FROM dual;
目前,我正在手动编写CLOB脚本,但我想自动构建它以避免为所有记录编写它。 “'级别名称:'”被迭代10次,因为LVL_CNT = 10.如果LVL_CNT = 5,则迭代“'级别名称:'”5次。我怎样才能做到这一点?
答案 0 :(得分:1)
Select rpad('level name:', lvl_cnt*length('level name:'), 'level name:')
from yourtable
应该为您提供级别名称:级别名称:级别名称:级别名称:'对于lvl_cnt = 4
跟进任务(级别名称1:级别名称2:...)
有一个简单但不可扩展的解决方案。如果你知道你的最大lv_cnt并且它不是很大[max varcahr2 2000 / length(' level name001')= 142](例如,最多lvl_cnt = 4):
select susbtr(
rpad(
rpad(
rpad('level name1:',
2*length('level name1:'), 'level name2:'),
3*length('level name1:'), 'level name3:'),
4*length('level name1:'), 'level name4:'),
1, lvl_cnt*length('level name1:')
from dual
当你超过10,100时,这将是复杂的逻辑...因为它会影响整体长度,但你可以将格式更改为' level name001:'保持简单:)。
...但是如果你考虑一下,它就像预建字符串
select substr('level name1:level name2:level name3:level name4:', 1, lvl_cnt*12)
from dual