分割函式和根據Id串返回名字

2021-09-07 01:33:51 字數 2876 閱讀 5502

需求:函式傳入乙個字串引數 例如  123-456

將這個字串123-456拆成兩個值 123   456,在通過兩個值分別查出資料(例如 張三  李四),拼接成     張三-李四

--宣告變數--

drop

type str_split;

create

orreplace type str_split is

table

ofvarchar2 (4000);/

drop

type type_split;

create

orreplace type type_split as

table

ofvarchar2(500

);/

--分割字串函式--

create

orreplace type str_split is

table

ofvarchar2 (4000

);create

orreplace

function splitstr(p_string in

varchar2, p_delimiter in

varchar2

)

return

str_split

pipelined

asv_length

number :=

length(p_string);

v_start

number :=1;

v_index

number

;begin

while(v_start <=

v_length)

loop

v_index :

=instr(p_string, p_delimiter, v_start);

if v_index =

0then

pipe

row(substr(p_string, v_start));

v_start :

= v_length +1;

else

pipe row(substr(p_string, v_start, v_index -

v_start));

v_start :

= v_index +1;

endif

;

endloop;

return

;end

splitstr;

--使用方法--

select

*from

table(splitstr('

16021-16022

','-

')); --

執行出的結果

column_value

16021

16022

這個是我自己寫的函式

create

orreplace

function fn_getdead (v_deadid varchar2

)return

varchar2

isv_deadstring

varchar2(100

);v_deadstring_all

varchar2(4000

);cursor c_deadidspilt --

設定乙個分割字串游標--

isselect

*from

table(splitstr(''

||v_deadid||

'','-'

));c_row c_deadidspilt

%rowtype;

begin

if instr(v_deadid,'

-') >

0then

---判讀變數中是否含有"-"字元,如果有,則迴圈遍歷這個字元,取出亡人姓名

open c_deadidspilt; --

開啟游標--

loop

fetch c_deadidspilt into

c_row;

exit

when c_deadidspilt%

notfound;

select wrxm into v_deadstring from wrxxb where id=

c_row.column_value;

v_deadstring_all:

=v_deadstring_all||'-

'||v_deadstring;

endloop;

close

c_deadidspilt;

return

ltrim(v_deadstring_all,'-'

); else

select wrxm into v_deadstring from wrxxb where id=

''||v_deadid||'';

return

v_deadstring;

endif;

--異常處理--

exception

when others then dbms_output.put_line('

error');

return-1

;end

fn_getdead;/--

呼叫--

select fn_getdead('

16021-16022

') from

dual; --

我執行出的結果--

fn_getdead('

16021-16022')

馬瑞祥-趙桂芝

C 根據空格分割字串Split函式可以是多個空格

stringstrarray yourstring.split newchar publicstaticvoidmain public static void main console.readline string strs csdn c 論壇 版竹 strs strs.trim strs sys...

C Split函式根據特定分隔符分割字串的操作

在c 程式開發過程中,很多時候可能需要將字串根據特定的分割字元分割成字元或者list集合,例如根據逗號將字串分割為陣列,或者根據豎線將字串分割成陣列,c 中提供了split 函式來快速將字串分割成陣列形式,如果需要轉換為list集合,可在分割完成後使用陣列的tolist 方法即可轉換為list集合資...

葉子函式分享九 根據字元分割字串的三種寫法

go 建立函式 第一版 create function dbo m split c varchar 2000 split varchar 2 returns t table col varchar 200 as begin while charindex split,c 0 begin insert...