1. 程式人生 > >oracle中有分隔符的列轉成多行

oracle中有分隔符的列轉成多行

      select user_id,user_name,
       --regexp_substr(str,reg,起始位置 第幾次)
       regexp_substr(teachers, '[^,]+', 1, level) teacher
      from students
      connect by level <= regexp_count(teachers, ',') + 1
      --regexp_count(teachers, ',') 統計字串中,的數量
      and user_id = prior user_id
      --你能理解CONNECT BY吧?它相當於是一個遞迴的自連線,不斷地把每層的連線結果疊加到結果集中。兩層之間的連線條件和遞迴出口寫在CONNECT BY中。在這裡我們的資料並無父子關係,只是要讓同一行資料重複出現,因此我們的連線的條件只用到了表的主鍵id=PRIOR id, 此外再用LEVEL控制層數作為遞迴出口。但ORACLE有個檢查,如果你有前後連線條件(id=PRIOR id),但是同一行資料再次出現,它就會報一個錯:
      --ERROR:
      --ORA-01436: CONNECT BY loop in user data
      --為了欺騙它,這裡用了一個PRIOR DBMS_RANDOM.VALUE, 因為DBMS_RANDOM.VALUE每次呼叫都返回不同結果,所以它認為兩行資料不一樣,所以不報錯了。
      and prior dbms_random.value is not null

相關推薦

oracle分隔符

select user_id,user_name, --regexp_substr(str,reg,起始位置 第幾次) regexp_substr(teache

js傳遞json到後臺物件,物件集合 /或者集合

String escapeHtml=StringEscapeUtils.unescapeHtml(jsonStr); System.out.println("escapeHtml=="+escapeH

hive一行資料拆分

lateral view用於和split、explode等UDTF一起使用的,能將一行資料拆分成多行資料,在此基礎上可以對拆分的資料進行聚合,lateral view首先為原始表的每行呼叫UDTF,UDTF會把一行拆分成一行或者多行,lateral view在把結果組合,

Oracle資料庫欄位資料拆分(REGEXP_SUBSTR函式)

做多選功能時為了簡便,會在某個欄位中儲存多個值,儲存時雖然省事,但後續的查詢統計時還需要拆分資料才行,因此這時需要將欄位內的值分成多行以便後續使用。 下面這個例子實現了欄位內資料的拆分: --建立測試表 create table t_test( t_type_id varchar2

將表一個欄位拆分 oracle db2欄位拆分

--oracle 資料庫拆分辦法 WITH TT(bbbh, USER_, sjly) AS  (SELECT 00 bbbh, '' USER_, 'a^b^c' || '^' sjly     from dual   UNION ALL   SELECT bbbh,  

oracle (轉行)、

1.多列轉成一列(列轉行) --6列轉成兩列(列轉行) 這就是最常見的列轉行,主要原理是利用SQL裡面的union with temp as  (select    a.iid_sn,    a.product_name,    a.sales_figures,    a

SQLSERVER分割字符串

逗號 字符串 sel image ive 查詢 lan color tro 今天修改到之前的大佬的代碼,居然把多個Id存在一個列裏面,還是用的逗號分割。。。特麽查詢的時候怎麽辦??? 網上搜索了半天,終於找到了SqlServer裏面有一個PARSENAME函數,可以按.(

Oracle資料庫clob欄位MD5碼,並能在where條件或者group使用

轉載自:https://blog.csdn.net/siyouzi/article/details/29589613   1.建立java source ------------Java source------------------------ create or repl

SQL Server 轉行。

一、多行轉成一列(並以","隔開)表名:A表資料:想要的查詢結果:查詢語句:SELECT name , value = ( STUFF(( SELECT ',' + value FROM A

用SQL實現結果集的各種轉換----結果集

      之前一篇講述瞭如何將結果集轉成一列,下面介紹如何將一個結果集轉為多列。       假設原資料表如圖1所示,現在要將如圖2顯示的結果集轉換為如圖3所示的結果集。                                                    

OracleREGEXP_SUBSTR函式(字串)

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

oracle 將一資料1資料

select wm_concat(name) name from user;--10g寫法 select listagg(name,',') within group (order by name)

Pandas: 如何將一的文本拆分為? | Python

gid scene pmo lua ioe solid gige ble app Pandas: 如何將一列中的文本拆分為多行? 在數據處理過程中,經常會遇到以下類型的數據: 在同一列中,本該分別填入多行中的數據,被填在一行裏了,然而在分析的時候,需要拆分成為多

如何查詢一個表哪些全為空

upper num gin execute columns oop ring line contain DECLARE CURSOR temp IS SELECT COLUMN_NAME FROM ALL_TAB_COLUMNS WHERE TABLE_NAME=Up

oracle 聚合函數 LISTAGG ,將結果合並一行

亂碼 進行 to_char acl oracle bsp 結果 查詢 聚合函數 LISTAGG( to_char(Item_Category_Name), ‘,‘) WITHIN GROUP(ORDER BY Item_Category_Name) -- 將 Item

Oracle資料偽 ROWNUM,ROWID的用法

對於rownum來說它是oracle系統順序分配為從查詢返回的行的編號,返回的第一行分配的是1,第二行是2,依此類推,這個偽欄位可以用於限制查詢返回的總行數,且rownum不能以任何表的名稱作為字首。 (1) rownum 對於等於某值的查詢條件 如果希望找到學生表中第一條學生的資訊,可以使

oracle資料庫總結(七)--ORACLE ROWNUM用法總結! ()

來自:http://www.cnblogs.com/chinhr/archive/2007/09/30/911685.html   ORACLE 中ROWNUM用法總結!  對於 Oracle 的 rownum 問題,很多資料都說不支援>,>=,=,betwe

將excel按照某一拆分個單獨檔案

  1.開啟目標excel,按alt + f11鍵開啟VBE視窗 2.選擇插入->模組貼上下面程式碼到編輯器中   程式碼: Sub 保留表頭拆分資料為若干新工作簿() Dim arr, d As Object, k, t, i&,

OracleROWNUM偽和ROWID偽的用法與區別

做過Oracle分頁的人都知道由於Oracle中沒有像MySql中limit函式以及SQLServer中的top關鍵字等,所以只能通過偽列的方式去滿足分頁功能,在此,不談分頁方法,只從根本上去介紹這兩個偽列的用法與原理,同樣還是以scott使用者的emp表為例;一、ROWNUM偽列ROWNUM 是Oracle

pdfbox將頁pdf張長圖片

首先需要說明的幾點事情 本文是基於pdfbox2.0以上版本實現的 主要實現功能是將多頁的pdf檔案轉成1張png或者jpg圖片,或者多張jpg圖片 本文是借鑑將多頁pdf轉成1張長圖片的方法修改 功能由來 最近專案要求能夠實現office(word, e