1. 程式人生 > >oracle分割字串後以單列多行展示

oracle分割字串後以單列多行展示

原始的sql:

select substr(field1,

              instr(field1, '|', 1, rownum) + 1,

              instr(field1, '|', 1, rownum + 1) -

              instr(field1, '|', 1, rownum) - 1) as field2

  from (select '|' || 'a|bbb|cccc|ddddd|ee|d|a' || '|' as field1 from dual)

connect by instr(field1, '|', 2, rownum) > 0;

查詢結果如下:

field2

a
bbb
cccc
ddddd
ee
d
a

connect by :遞迴,即查詢繼續的條件

instr(field1, '|', 2, rownum)  字串從第2個位置開始,即從a開始,‘|’分隔符從第一次到第八次出現的位置依次是:3、5、7、9、11、13、15、0,所以會查詢七次,也就是會有七行。

substr函式的第二個引數為instr(field1, '|', 1, rownum) + 1,表示‘|’從第一個位置開始匹配,第一到第七次匹配的位置加上一,即2、4、6、8、10、12、14

substr函式的第三個引數仔細看一下,恆等於一。

也就是說,按‘|’分割後,第一次取第二部分,第二次取第四部分,依次類推。

取的值分別為:a、bbb、cccc、ddddd、ee、d、a

因為rownum是遞增的,所以會變成七行資料。

分析完畢。

相關推薦

oracle分割字串單列展示

原始的sql: select substr(field1, instr(field1, '|', 1, rownum) + 1, instr(field1, '|', 1, rownum + 1) -

Oracle安裝完成,如何用命令啟動和關閉數據庫?

運行 沒有 操作 imm 文件 back file 不能 正常的 Oracle安裝完成後,如何用命令行啟動和關閉數據庫? 解答: 打開:STARTUP [FORCE] [RESTRICT] [PFILE= filename] [OPEN [RECOVER][ dat

Oracle分割字串轉成表的方法

 --分割字串轉成表 (1)定義巢狀表型別 CREATE OR REPLACE TYPE "MYTABLE"                                                                          AS TABLE

關於Oracle中排序取前幾的問題

                 查詢語句一、    SELECT V.STAMP,TO_CHAR(V.GPSTIME,'YYYY-MM-DD HH24:MI:SS'),V.PHOTOURL,V.SMALLPHOTOURL,V.TOUCH_OFF,V.VIDICON_NO,V.SPEED,V.COURSE,V

oracle 聚合函式 LISTAGG ,將結果合併成一行

LISTAGG(列名,' 分割符號') oracle 11g 以上的版本才有的一個將指定列名的多行查詢結果,用 指定的分割符號 合併成一行顯示: 例如: 表原始資料: 需求:將 mb1_Transport_License_list 表中的資料,根據 transport

Oracle分割字串中的所有逗號 REGEXP_SUBSTR

分割字串中所有的逗號,然後成多行 引數說明, 引數1: 待分割字串 引數2:正則表示式 引數3:起始位置,從第幾個字元開始正則表示式匹配(預設為1) 引數4:標識第幾個匹配組,預設為1 引數5:模式(

PostgreSQL中如何將單列組合成一行?

客戶有一個場景,希望將某個字斷查詢出得結果組合成為一個字串,用逗號分割,具體實施方法為通過PG中的函式實現:--檢視某一列資料 select name from cities; Las Vegas Ma

oracle 將一個字串分割

第一種方法: select substr(t,1,instr(t,',',1)-1) from ( select substr(s,instr(s,',',1,rownum)+1)||',' as t,rownum as d ,instr(s,',',1,rownum)+1

SQL字串分割

原型資料: 需求: 按逗號或分號將欄位IT_Description值分割為多行,填充下拉列表SQL實現指令碼 SELECT b.vv FROM( SELECT CONVERT(XML,'<n>'+REPLACE(REPLACE(IT_Descriptio

Oracle SQL符號分隔的字串拆分

之前寫了一篇文章,http://blog.csdn.net/seandba/article/details/72644257 討論了從單行字串拆分到多行字串拆分,最後的解決不算圓滿。 從一個比較簡單的問題出發的,需求如下: 將源表的name列的字串拆分成一個個字元,不使用u

oralce逗號分割 Oracle中REGEXP_SUBSTR函式

Oracle中REGEXP_SUBSTR函式 Oracle中REGEXP_SUBSTR函式的使用說明: 題目如下: 在oracle中,使用一條語句實現將'17,20,23'拆分成'17','20','23'的集合。 REGEXP_SUBSTR函式格式如下: funct

ORACLE:一列的資料拼成字串

上篇文章寫的是在ibatis中,需要返回一個字串,卻返回了多行資料,結果出現了錯誤。 其實,我想做的是:   查詢表中的一個欄位,返回了多行,就把這麼多行的資料都拼成一個字串。 例:   id  name        1   aa        2   bb       

oracle 字串

SELECT SUBSTR(FIELD1, INSTR(FIELD1, '|', 1, ROWNUM) + 1, INSTR(FIELD1, '|', 1, ROWNUM + 1) - INSTR(FIELD1, '|',

MFC將edit編輯框內的字串,根據“\n”換分割個單行字串

程式碼功能:獲取到edit編輯框內的多行內容,並將其分割成多個單行字串 作者:weekdawn //獲取編輯框內容 UpdateData(TRUE); CString strEditStr;//編

SqlServer和Oracle記錄(資料集)中查詢結果並拼接成一個字串的SQL語句(縱表資料轉成拼接的文字)

使用情景: 例如:需要從學生成績表中,查詢分數大於95分的所有學生編號,用逗號分隔成一個字串。 準備測試資料: create table score (id int,score int) insert into score values(1,90) insert into

Oracle SQL函式listagg實現字串連線

listagg 函式將組內的資料通過 order by 排序後,再連線到一起,可以指定分隔符。輸入多行,輸出一行或多行。常用來將值連線成逗號分隔的資料。 語法: 三個使用場景: As a single-set aggregate function, LISTAGG

Oracle中REGEXP_SUBSTR函式(字串)

Oracle中REGEXP_SUBSTR函式的使用說明: 題目如下: 在oracle中,使用一條語句實現將’17,20,23’拆分成’17’,’20’,’23’的集合。 REGEXP_SUBSTR函式格式如下: function REGEXP_SUB

用SQL將Oracle中同一列的記錄拼接成一個字串

-- 原始資料 -- a 111 -- b 222 -- a 333 -- a 444 -- b 555 -- 最終結果 -- a 111*333*444 SELECT L4.L_TIME ,MAX(SUBSTR(L4.分組內容,2)) 最終欄位

將逗號分割的clob欄位轉化為varchar,並將字串拆分為

SELECT '遠大' 企業名稱, sgpro.project_name 工程名稱, pur.product_type 產品類別, pur.product_name 產品名稱, pur.purchase_num 涉及數量

Java 按讀取檔案按寫入檔案並空格分割字串

首先是按行讀取字串 import java.io.BufferedReader; import java.io.File; import java.io.FileReader; public c