select 1001, regexp_substr('1,2,3','[^,]+',1,rownum), regexp_substr('7,8,9','[^,]+',1,rownum) from dual
成都創(chuàng)新互聯(lián)公司是一家集網(wǎng)站建設(shè),攀枝花企業(yè)網(wǎng)站建設(shè),攀枝花品牌網(wǎng)站建設(shè),網(wǎng)站定制,攀枝花網(wǎng)站建設(shè)報(bào)價,網(wǎng)絡(luò)營銷,網(wǎng)絡(luò)優(yōu)化,攀枝花網(wǎng)站推廣為一體的創(chuàng)新建站企業(yè),幫助傳統(tǒng)企業(yè)提升企業(yè)形象加強(qiáng)企業(yè)競爭力。可充分滿足這一群體相比中小企業(yè)更為豐富、高端、多元的互聯(lián)網(wǎng)需求。同時我們時刻保持專業(yè)、時尚、前沿,時刻以成就客戶成長自我,堅(jiān)持不斷學(xué)習(xí)、思考、沉淀、凈化自己,讓我們?yōu)楦嗟钠髽I(yè)打造出實(shí)用型網(wǎng)站。
connect by rownum =lenght(substr_replace('1,2,3','[^,]+'))+1
上面是一句sql
有一個缺點(diǎn),就是B,C的項(xiàng)目個數(shù)要是不一樣的話,要做一些變形。
例子中是用 逗號 分隔。
union all就行了
SQL code
select c1,c1百分比 from T
UNION ALL
select c2,c2百分比 from T
……
首先,看你是想導(dǎo)出成文本,還是直接插表里
要是導(dǎo)出的話,用spool就行
你那個試試,用下面三句
spool e:\log.txt; (當(dāng)然隨便放什么地方,起什么名,路徑對了就行)
select bif_code||','||name||';' from bis_bif_init;
spool off;
然后你去路徑哪里找那個log.txt,里面就是你說那格式的,這格式可以調(diào)整
你要想放表里也行中間那句可以換成
select 'insert into bis_bif_init( 新列名 ) values(' ||bif_code|| ',' || name || ') where xxx;' from bis_bif_init;
就是說格式自己定,''中想加啥加啥用||連起來就行。同樣去找txt,格式就是你定的那樣。
-------------------------------------------------------------------------------------------
這是一種txt的,還有一個,如果你想在這個表的新列里直接顯示加逗號那個格式的,也可以。就不用txt了,下次直接導(dǎo)出該列就行。但需要在表里加個列
alter table BIS_BIF_INIT add xxx(新列名字) char(100) generated always as (bif_code||','||name);
然后表里就有這個拼好的列,可能字符會很多,定大點(diǎn)
------------------------------------------------------------------------------------
最后一種,直接建個視圖得了,省事,就一句話
create view vie_bis_bif_init as bif_code||','||name||';' from bis_bif_init;
select b,
t.ca,
c.lv,instr(t.ca, ',', 1, c.lv) + 1,
substr(t.ca,
instr(t.ca, ',', 1, c.lv) + 1,
instr(t.ca, ',', 1, c.lv + 1) -
(instr(t.ca, ',', 1, c.lv) + 1)) AS c
from (select b,
',' || c || ',' AS ca,
c,
LENGTH(C),
length(c || ','),
REPLACE(c, ','),
length(REPLACE(c, ',')), --刪除逗號的長度
nvl(length(REPLACE(c, ',')), 0), --空值長度為空,因此要將空值替換為0
length(c || ',') - nvl(length(REPLACE(c, ',')), 0) AS cnt --以逗號分隔的字符串個數(shù),先在原來的長度上加1 計(jì)算去除所有逗號后字符串長度,再,拿這個
FROM TEST_A) t,
(select LEVEL lv from dual CONNECT BY LEVEL = 100) c
where c.lv = t.cnt --逗號數(shù)量在100以內(nèi)