扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
select 1001, regexp_substr('1,2,3','[^,]+',1,rownum), regexp_substr('7,8,9','[^,]+',1,rownum) from dual
成都创新互联公司是一家集网站建设,攀枝花企业网站建设,攀枝花品牌网站建设,网站定制,攀枝花网站建设报价,网络营销,网络优化,攀枝花网站推广为一体的创新建站企业,帮助传统企业提升企业形象加强企业竞争力。可充分满足这一群体相比中小企业更为丰富、高端、多元的互联网需求。同时我们时刻保持专业、时尚、前沿,时刻以成就客户成长自我,坚持不断学习、思考、沉淀、净化自己,让我们为更多的企业打造出实用型网站。
connect by rownum =lenght(substr_replace('1,2,3','[^,]+'))+1
上面是一句sql
有一个缺点,就是B,C的项目个数要是不一样的话,要做一些变形。
例子中是用 逗号 分隔。
union all就行了
SQL code
select c1,c1百分比 from T
UNION ALL
select c2,c2百分比 from T
……
首先,看你是想导出成文本,还是直接插表里
要是导出的话,用spool就行
你那个试试,用下面三句
spool e:\log.txt; (当然随便放什么地方,起什么名,路径对了就行)
select bif_code||','||name||';' from bis_bif_init;
spool off;
然后你去路径哪里找那个log.txt,里面就是你说那格式的,这格式可以调整
你要想放表里也行中间那句可以换成
select 'insert into bis_bif_init( 新列名 ) values(' ||bif_code|| ',' || name || ') where xxx;' from bis_bif_init;
就是说格式自己定,''中想加啥加啥用||连起来就行。同样去找txt,格式就是你定的那样。
-------------------------------------------------------------------------------------------
这是一种txt的,还有一个,如果你想在这个表的新列里直接显示加逗号那个格式的,也可以。就不用txt了,下次直接导出该列就行。但需要在表里加个列
alter table BIS_BIF_INIT add xxx(新列名字) char(100) generated always as (bif_code||','||name);
然后表里就有这个拼好的列,可能字符会很多,定大点
------------------------------------------------------------------------------------
最后一种,直接建个视图得了,省事,就一句话
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 --以逗号分隔的字符串个数,先在原来的长度上加1 计算去除所有逗号后字符串长度,再,拿这个
FROM TEST_A) t,
(select LEVEL lv from dual CONNECT BY LEVEL = 100) c
where c.lv = t.cnt --逗号数量在100以内
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流