set global log_bin_trust_function_creators = 1;
#1. 函式func_splitstringtotal:將字串按指定方式分割,並計算單元總數
drop function if exists `func_get_splitstringtotal` ;
create function `func_get_splitstringtotal`(
f_string varchar(10000),f_delimiter varchar(50)
) returns int(11)
begin
return 1+(length(f_string) - length(replace(f_string,f_delimiter,'')));
end;
select func_get_splitstringtotal('1,2,3,4,5,6,7',',');
#2.函式func_splitstring:將字串按指定方式分割,獲取指定位置的數
drop function if exists `func_splitstring` ;
create function `func_splitstring`
( f_string varchar(1000),f_delimiter varchar(5),f_order int)
returns varchar(255) charset utf8
begin
declare result varchar(255) default '';
set result = reverse(substring_index(reverse(substring_index(f_string,f_delimiter,f_order)),f_delimiter,1));
return result;
end;
select func_splitstring('1,2,3,4,5,6,7',',',5);#取第五個值
#3.過程splitstring 將字串分割,並放到臨時表tmp_split 裡面
drop procedure if exists `splitstring` ;
create procedure `splitstring`
(in f_string varchar(1000),
in f_delimiter varchar(5))
begin
declare cnt int default 0;
declare i int default 0;
set cnt = func_get_splitstringtotal(f_string,f_delimiter);
drop table if exists `tmp_split`;
create temporary table `tmp_split` (`val_` varchar(128) not null) default charset=utf8;
while i < cnt
do set i = i + 1;
insert into tmp_split(`val_`) values (func_splitstring(f_string,f_delimiter,i));
end while;
end;
#呼叫儲存過程
call splitstring('a,s,d,f,g,h,j',',');
#檢視呼叫結果
select * from tmp_split;
MySql儲存過程與儲存函式
在開發過程種常常會重複使用某些sql語句,為此mysql sdsd 先建立乙個表 create table user insert user username,password values jacklove qqqqqq insert user username,password values u...
MySQL儲存過程和儲存函式
儲存過程和儲存函式 mysql的儲存過程 stored procedure 和函式 stored function 統稱為stored routines。1.儲存過程和函式的區別 函式只能通過return語句返回單個值或者表物件。而儲存過程不允許執行return,但是通過out引數返回多個值。函式是...
mysql 過程和函式 MySQL 儲存過程和函式
變數 系統變數 變數由系統提供,不是使用者自定義的,屬於伺服器層面 全域性變數 會話變數 如果是全域性級別,則需要加global,如果是會話級別,則需要加session,如果不寫,則預設是會話 檢視全域性變數 show global variables show global variablesli...