网站建设资讯

NEWS

网站建设资讯

oracle怎么隔行 oracle按照分隔符拆分行

oracle单行多列,拆分成多行

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的项目个数要是不一样的话,要做一些变形。

例子中是用 逗号 分隔。

Oracle中怎么把查出来的一行结果拆分为两行

union all就行了

SQL code

select c1,c1百分比 from T

UNION ALL

select c2,c2百分比 from T

……

ORACLE怎么把查询出来的结果集的每条记录的每一列用逗号分隔,一条记录完后用分号分隔

首先,看你是想导出成文本,还是直接插表里

要是导出的话,用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;

oracle 如何将一个字段由逗号分割成多行

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以内


当前标题:oracle怎么隔行 oracle按照分隔符拆分行
文章分享:http://njwzjz.com/article/hiohic.html