業務需求:拆分字串,然後將數字轉換成中文描述,返回成以,分割的中文描述
-- 修改結束符,防止在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...