用sql*plus,分隔符是set colsep '',換行符不知怎么設(shè)...也許可以查找替換
網(wǎng)站建設(shè)哪家好,找成都創(chuàng)新互聯(lián)!專注于網(wǎng)頁設(shè)計、網(wǎng)站建設(shè)、微信開發(fā)、微信小程序開發(fā)、集團企業(yè)網(wǎng)站建設(shè)等服務(wù)項目。為回饋新老客戶創(chuàng)新互聯(lián)還提供了阜新免費建站歡迎大家使用!
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都先顯示的話,就要寫成一個函數(shù)來調(diào)用了。
oracle是塊結(jié)構(gòu)語言,oracle程序劃分成幾個部分,并在每個部分中寫入邏輯代碼塊,每個塊由三個子部分組成。
聲明部分:此部分是以關(guān)鍵字DECLARE開頭。這是一個可選部分,并定義了程序中要使用的所有變量,游標(biāo),子程序和其他元素。
可執(zhí)行命令部分:此部分包含在關(guān)鍵字BEGIN和END之間,這是一個強制性部分。由程序的可執(zhí)行oracle語句組成。應(yīng)該有至少一個可執(zhí)行代碼行,可以只是一個NULL命令,表示不執(zhí)行任何操作。
異常處理部分 :此部分以關(guān)鍵字EXCEPTION開頭。這是一個可選部分,包含處理程序中錯誤的異常。
每個oracle語句以分號(;)結(jié)尾。使用BEGIN和END可以將oracle塊嵌套在其他oracle塊中。以下是Poracle塊的基本結(jié)構(gòu)。
Hello World示例:
END;行表示oracle塊的結(jié)尾。要從oracle命令行運行代碼,需要在代碼的最后一行之后鍵入/字符。當(dāng)上述代碼在oracle提示符下執(zhí)行時,它會產(chǎn)生以下結(jié)果:
oracle標(biāo)識符:oracle標(biāo)識符是常量,變量,異常,過程,游標(biāo)和保留字。標(biāo)識符包括一個字母,可選地后跟多個字母,數(shù)字,美元符號,下劃線和數(shù)字符號,不得超過30個字符。
默認(rèn)情況下,標(biāo)識符不區(qū)分大小寫。例如,可以使用integer或INTEGER來表示一個數(shù)值。 不能使用保留關(guān)鍵字作為標(biāo)識符。
擴展資料
oracle注釋程序:注釋可以在編寫的oracle代碼中包含的說明性文字,并幫助其他人閱讀源代碼。所有編程語言都允許某種形式的注釋。
oracle支持單行和多行注釋。注釋中的所有字符都被oracle編譯器忽略。oracle單行注釋以分隔符開頭 --(雙連字符),多行注釋由/*和*/括起來。
當(dāng)上述代碼在oracle提示符下執(zhí)行時,會產(chǎn)生以下結(jié)果:
oracle變量的名稱由可選的字母,數(shù)字,美元($)符號,下劃線和數(shù)字符號組成,不能超過30個字符。 默認(rèn)情況下,變量名不區(qū)分大小寫。不能將保留的oracle關(guān)鍵字用作變量名稱。
oracle編程語言允許定義各種類型的變量,如:日期時間數(shù)據(jù)類型,記錄,集合等,我們將在后面的章節(jié)中介紹。 在本章中僅學(xué)習(xí)基本的變量類型。
首先,看你是想導(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);
然后表里就有這個拼好的列,可能字符會很多,定大點
------------------------------------------------------------------------------------
最后一種,直接建個視圖得了,省事,就一句話
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
返回結(jié)果:
TOKEN
23
34
45
56