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