Oracle字符分隔函數(split)

為了讓 PL/SQL 函數返回數據的多個行,必須通過返回一個 REF CURSOR 或一個數據集合來完成。REF CURSOR 的這種情況局限于可以從查詢中選擇的數據,而整個集合在可以返回前,必須進行具體化。Oracle 9i 通過引入的管道化表函數糾正了后一種情況。表函數是返回整個行的集(通常作為一個集合)的函數,可以直接從 SQL 語句中進行查詢,就好像它是一個真正的數據庫表一樣。管道化表函數與之相似,但是它像在構建時一樣返回數據,而不是一次全部返回。管道化表函數更加有效,因為數據可以盡可能快地返回。

管道化表函數必須返回一個集合。在函數中,PIPE ROW 語句被用來返回該集合的單個元素,該函數必須以一個空的 RETURN 語句結束,以表明它已經完成。一旦我們創建了上述函數,我們就可以使用 TABLE 操作符從 SQL 查詢中調用它。

管道化表函數經常被用來把數據從一種類型轉化成另一種類型。

?

create or replace function strsplit(p_value varchar2,p_split varchar2 := ',')
--usage: select * from table(strsplit('1,2,3,4,5'))return strsplit_typepipelined isv_idx       integer;v_str       varchar2(500);v_strs_last varchar2(4000) := p_value;beginloopv_idx := instr(v_strs_last, p_split);exit when v_idx = 0;v_str       := substr(v_strs_last, 1, v_idx - 1);v_strs_last := substr(v_strs_last, v_idx + 1);pipe row(v_str);end loop;pipe row(v_strs_last);return;end strsplit;

?

usage: select * from table(strsplit('1,2,3,4,5'))

1 1
2 2
3 3
4 4
5 5

注:
使用上面的函數前需要先建立一個類型
CREATE OR REPLACE TYPE strsplit_type IS TABLE OF VARCHAR2 (4000)

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/386581.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/386581.shtml
英文地址,請注明出處:http://en.pswp.cn/news/386581.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

已成功拿下字節、騰訊、脈脈offer,吐血整理

為什么想跳槽? 簡單說一下當時的狀況,我在這家公司做了兩年多,這兩年多完成了一個大項目,作為開發的核心主力,開發壓力很大,特別是項目上線前的幾個月是非常辛苦,幾乎每晚都要加班到12點以后&a…

復雜HTML解析

#再端一碗BeautifulSoup #獲取《戰爭與和平》中的人物名字from urllib.request import urlopen from bs4 import BeautifulSouphtml urlopen("http://www.pythonscraping.com/pages/warandpeace.html") bsObj BeautifulSoup(html,html.parser)#namelist bsObj.fin…

java main方法里調用mapper

在main方法中調用mybatis的mapper,一次性執行導入數據功能package com.runxsoft.test;import com.runxsoft.iutils.common.utils.UserUtils; import com.runxsoft.superwe.base.SqlVo; import com.runxsoft.superwe.base.mapper.ProtogenesisMapper; import com.run…

已成功拿下字節、騰訊、脈脈offer,滿滿干貨指導

開頭 籠統來說,中年程序員容易被淘汰的原因其實不外乎三點。 1、輸出能力已到頂點。這個人奮斗十來年了,依舊碌碌無為,很明顯這人的天花板就這樣了,說白了,天賦就這樣。 2、適應能力越來越差。年紀大,有家…

ServletRequest HttpServletRequest 請求方法 獲取請求參數 請求轉發 請求包含 請求轉發與重定向區別 獲取請求頭字段...

原文地址:ServletRequest HttpServletRequest 請求方法 獲取請求參數 請求轉發 請求包含 請求轉發與重定向區別 獲取請求頭字段ServletRequest 基本概念 JavaWeb中的 "Request"對象 實際為 HttpServletRequest 或者 ServletRequest, 兩者都為接口服務器接收請求…

c#掃描圖片去黑邊(掃描儀去黑邊)

/// <summary> /// 自動去除圖像掃描黑邊 /// </summary> /// <param name"fileName"></param> public static void AutoCutBlackEdge(string fileName) { //打開圖像 Bit…

已成功拿下字節、騰訊、脈脈offer,算法太TM重要了

一、背景介紹 從實用角度梳理一篇能夠幫大家快速掃盲的CMake基礎教程&#xff0c;也是對我目前負責項目的一次學習總結。既然選擇從項目實用性考慮&#xff0c;下面的講解內容可能并不一定完整&#xff0c;更多的是符合項目目前使用到的一些特性。 接下來正面回答這個問題&am…

SpringBoot2.0 Actuator 監控參數說明

主要內容更 監控參數說明 Maven坐標 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-actuator</artifactId> </dependency> <dependency><groupId>io.micrometer</groupId>&…

帶你一步一步深入Handler源碼,醍醐灌頂!

開頭 最近有粉絲反應&#xff0c;不想做安卓了&#xff0c;有朋友轉到前端了&#xff0c;安卓不行了&#xff0c;問我怎么辦&#xff1f; 自從RN&#xff0c;Weex這種跨平臺編程語言出來以后&#xff0c;安卓將死的言論總是不絕于耳。隨著頗有摧枯拉朽之勢Flutter的出現&…

Spring基于狀態機squirrel-foundation簡單使用

squirrel-foundation的一些使用方法在百度上資料還是比較少&#xff0c;我是根據以下三個大佬寫的文章借鑒的&#xff0c;在這里記錄一下。 1、squirrel-foundation-demo 2、Squirrel使用&#xff08;中文文檔&#xff09; 3、squirrel-foundation狀態機的使用細節 我在這里直接…

記得把每一次面試當做經驗積累,深夜思考

開頭 Android開發&#xff0c;假如開始沒有任何的開發經驗的話&#xff0c; 千萬不要著急&#xff0c;不要想著在短時間內就把一個語言學習好&#xff0c; 因為你之前沒有任何的學習經驗&#xff0c; 在這個過程中需要有耐心地學習完JAVA的基礎知識&#xff0c; 然后才開始踏上…

squirrel-foundation-demo

一個簡單的squirrel-foundation-demo 利用狀態機模擬一個訂單的支付過程。 squirrel-foundation沒有任何嚴重的依賴關系&#xff0c;因此基本上它應該是高度可嵌入的。squirrel-foundation沒有整合spring框架&#xff0c;所以首先要用spring集成squirrel-foundation。spring集成…

MongoDB學習目錄

MongoDB基礎篇 MongoDB 之 $ 關鍵字 python操作MongoDB 轉載于:https://www.cnblogs.com/yanzhi-1996/p/11095016.html

講的真透徹!還有人不知道什么是AndroidX的嗎?已拿offer入職

前言 春招已經接近尾聲了&#xff0c;不知道各位小伙伴有沒有收獲自己心儀的offer呢。筆者疫情被裁后在家LeetCode狂刷了800多題&#xff0c;加之自己以為工作總結的知識、經驗&#xff0c;系統化的整理了一下。在五一期間已經收獲了字節的offer。廢話不多說&#xff0c;下面是…

docker 啟動的 jenkins 中調用宿主機docker進行build

前言 期初有這個需求感覺就跟套娃一樣&#xff0c;你在docker 中調用docker&#xff0c;笑哭……這個也太逗了。 不過的確遇到了&#xff0c;因為jenkins 容器中沒有docker &#xff0c;所以在編譯 docker build 的時候 會出現 docker command 不存在。 好吧&#xff0c;解決他…

Codeforces 773D Perishable Roads 最短路 (看題解)

Perishable Roads 智商題&#xff0c; 不會啊。。 貼個官方題解 https://codeforces.com/blog/entry/51883 #include<bits/stdc.h> #define LL long long #define LD long double #define ull unsigned long long #define fi first #define se second #define mk make_p…

Rancher中的服務升級實驗

創建一個空的應用myAPP&#xff0c;在myAPP 應用中&#xff0c;創建一個服務nginx-test&#xff0c;包含2個容器副本&#xff0c;使用nginx:1.13.0鏡像。假設使用一段時期以后&#xff0c;nginx的版本升級到1.13.1了&#xff0c;如何將該服務的鏡像版本升級到新的版本&#xff…

該如何高效實用Kotlin?看這一篇就夠了!

前言 說起程序員人們的第一印象就是工資高、加班兇、話少錢多頭發少。再加上現在科技互聯網公司太吃香&#xff0c;bat、華為小米等公司程序員加班情況被廣泛傳播&#xff0c;程序員用生命在敲代碼的印象刻在了很多人的心里。 與其它行業一樣&#xff0c;凡是有高級和普通&…

apply()與call()

JavaScript中的每一個Function對象都有一個apply()方法和一個call()方法&#xff0c;它們的語法分別為&#xff1a; /*apply()方法*/ function.apply(thisObj[, argArray])/*call()方法*/ function.call(thisObj[, arg1[, arg2[, [,...argN]]]]); 它們各自的定義&#xff1a; a…

Java基于redis實現分布式鎖(SpringBoot)

前言 分布式鎖&#xff0c;其實原理是就是多臺機器&#xff0c;去爭搶一個資源&#xff0c;誰爭搶成功&#xff0c;那么誰就持有了這把鎖&#xff0c;然后去執行后續的業務邏輯&#xff0c;執行完畢后&#xff0c;把鎖釋放掉。 可以通過多種途徑實現分布式鎖&#xff0c;例如…