mysql拆分字串函式

2021-08-14 02:01:15 字數 3276 閱讀 9594

業務需求:拆分字串,然後將數字轉換成中文描述,返回成以,分割的中文描述 

-- 修改結束符,防止在mysql命令列中預設分號直接執行  

delimiter $$

-- 建立乙個計算拆分後字串的個數函式

drop function if exists calc_length $$

create function calc_length(str varchar(200), splitstr varchar(5)) returns int(11)

begin

return length(str)-length(replace(str, splitstr, ''))+1;

end $$

-- 建立乙個模擬的split拆分字串的函式

drop function if exists split_string $$

create function split_string(str varchar(200), splitstr varchar(5), strindex int) returns varchar(255)

begin

declare result varchar(255) default '';

set result =reverse(substring_index( reverse(substring_index(str, splitstr, strindex)), splitstr, 1));

return result;

end $$

-- 建立乙個迴圈函式

delimiter $$

drop function if exists split_model $$

create function split_model(str varchar(200)) returns varchar(2000)

begin

declare cnt int default 0;

declare i int default 0;

declare result varchar(2000) default ' ';

declare ab varchar(20)default ' ';

declare ac varchar(20)default ' ';

set cnt = calc_length(str, '|');

while i < cnt

do

set i = i+1;

set ab=split_string(str,'|', i);

if ab='1' then set ac='cpm';

elseif ab='2'

then set ac= 'cpc';

elseif ab='3' then set ac='cpa';

elseif ab='4' then set ac='cpt';

else set ac='cps';

end if;

set result=concat(result,ac,',');

end while;

return result;

end $$

-- 建立乙個迴圈函式

delimiter $$

drop function if exists split_mediatype $$

create function split_mediatype(str varchar(200)) returns varchar(2000)

begin

declare cnt int default 0;

declare i int default 0;

declare result varchar(2000) default ' ';

declare ab varchar(20)default ' ';

declare ac varchar(20)default ' ';

set cnt = calc_length(str, ',');

while i < cnt

do

set i = i+1;

set ab=split_string(str,',', i);

if ab='0' then set ac='購物';

elseif ab='1'

then set ac= '遊戲';

elseif ab='2' then set ac='**';

elseif ab='3' then set ac='影視';

elseif ab='4' then set ac='教育';

elseif ab='5' then set ac='應用';

else set ac='工具';

end if;

set result=concat(result,ac,',');

end while;

return result;

end $$

-- 建立乙個迴圈函式

delimiter $$

drop function if exists split_mediauser $$

create function split_mediauser(str varchar(200)) returns varchar(2000)

begin

declare cnt int default 0;

declare i int default 0;

declare result varchar(2000) default ' ';

declare ab varchar(20)default ' ';

declare ac varchar(20)default ' ';

set cnt = calc_length(str, '|');

while i < cnt

do

set i = i+1;

set ab=split_string(str,'|', i);

set ac= (select name_cn from sp_user where id=ab);

set result=concat(result,ac,',');

end while;

return result;

end $$

mysql拆分字串

函式 1 從左開始擷取字串 left str,length 說明 left 被擷取字段,擷取長度 例 select left make date,4 as year from t sale billing where make date 2017 06 24 2 從右開始擷取字串 right str...

Oracle拆分字串函式

原文中 有個錯誤 v start v length 1 雖然設定下次查詢起點為字串長度 1,但下次v index還是0,程式不會退回。程式沒有退出條件,故本句應改出使程式退出。exit 還有,原文中未檢測傳入的字串引數為null或為空的情況 此時返回的v index為空 下面改正了,見紅色字型部分。...

Oracle拆分字串函式

本函式可以將 目標字串 以 指定字串 進行拆分,並通過表結構返回結果。如下 create or replace type str split is table of varchar2 4000 create or replace function splitstr p string in varch...