用sql*plus,分隔符是set colsep '',换行符不知怎么设...也许可以查找替换
网站建设哪家好,找成都创新互联!专注于网页设计、网站建设、微信开发、微信小程序开发、集团企业网站建设等服务项目。为回馈新老客户创新互联还提供了阜新免费建站欢迎大家使用!
set colsep ''
set echo off newpage 0 space 0 pagesize 0 feed off head off trimspool on
spool test.dat
select * from test
spool off
with temp as
(
select name as text from a
)
select substr(text,instr(text,',',1,rn)+1,instr(text,',',1,rn+1)-instr(text,',',1,rn)-1) text from
(
select ','||t1.text||',' text,t2.rn from
(select text,length(text)-length(replace(text,',',''))+1 rn from temp) t1,
(select rownum rn from all_objects where rownum = (select max(length(text)-length(replace(text,',',''))+1) rn from temp)) t2
where t1.rn = t2.rn order by text,rn
)
用这种方法可以处理name这一列,如果你想ID、NAME都先显示的话,就要写成一个函数来调用了。
oracle是块结构语言,oracle程序划分成几个部分,并在每个部分中写入逻辑代码块,每个块由三个子部分组成。
声明部分:此部分是以关键字DECLARE开头。这是一个可选部分,并定义了程序中要使用的所有变量,游标,子程序和其他元素。
可执行命令部分:此部分包含在关键字BEGIN和END之间,这是一个强制性部分。由程序的可执行oracle语句组成。应该有至少一个可执行代码行,可以只是一个NULL命令,表示不执行任何操作。
异常处理部分 :此部分以关键字EXCEPTION开头。这是一个可选部分,包含处理程序中错误的异常。
每个oracle语句以分号(;)结尾。使用BEGIN和END可以将oracle块嵌套在其他oracle块中。以下是Poracle块的基本结构。
Hello World示例:
END;行表示oracle块的结尾。要从oracle命令行运行代码,需要在代码的最后一行之后键入/字符。当上述代码在oracle提示符下执行时,它会产生以下结果:
oracle标识符:oracle标识符是常量,变量,异常,过程,游标和保留字。标识符包括一个字母,可选地后跟多个字母,数字,美元符号,下划线和数字符号,不得超过30个字符。
默认情况下,标识符不区分大小写。例如,可以使用integer或INTEGER来表示一个数值。 不能使用保留关键字作为标识符。
扩展资料
oracle注释程序:注释可以在编写的oracle代码中包含的说明性文字,并帮助其他人阅读源代码。所有编程语言都允许某种形式的注释。
oracle支持单行和多行注释。注释中的所有字符都被oracle编译器忽略。oracle单行注释以分隔符开头 --(双连字符),多行注释由/*和*/括起来。
当上述代码在oracle提示符下执行时,会产生以下结果:
oracle变量的名称由可选的字母,数字,美元($)符号,下划线和数字符号组成,不能超过30个字符。 默认情况下,变量名不区分大小写。不能将保留的oracle关键字用作变量名称。
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 中可以用connect by把字符串按都好分割:
比如定义字符串:
pv_no_list :='23,34,45,56';
SELECT DISTINCT REGEXP_SUBSTR (pv_no_list,'[^,]+',1,LEVEL) as "token"
FROM DUAL
CONNECT BY REGEXP_SUBSTR (pv_no_list,'[^,]+',1,LEVEL) IS NOT NULL
order by 1
返回结果:
TOKEN
23
34
45
56