mysql函數(shù)split功能實(shí)現(xiàn)
更新時(shí)間:2012年09月20日 20:40:44 作者:
mysql 5.* 的版本現(xiàn)在沒(méi)有split 函數(shù),但有些地方會(huì)用,在這里就簡(jiǎn)單記錄一下
先設(shè)置:SET GLOBAL log_bin_trust_function_creators = 1;
1. 函數(shù)func_splitStringTotal:將字符串按指定方式分割,并計(jì)算單元總數(shù)
DELIMITER $$
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$$
DELIMITER ;
2.函數(shù)func_splitString:將字符串按指定方式分割,獲取指定位置的數(shù)
DELIMITER $$
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',',',1);
3.過(guò)程splitString 將字符串分割,并放到臨時(shí)表tmp_split 里面
DELIMITER $$
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_split_TotalLength(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_split(f_string,f_delimiter,i));
end while;
END$$
call splitString('a,s,d,f,g,h,j',',');
SELECT * from tmp_split;
1. 函數(shù)func_splitStringTotal:將字符串按指定方式分割,并計(jì)算單元總數(shù)
復(fù)制代碼 代碼如下:
DELIMITER $$
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$$
DELIMITER ;
2.函數(shù)func_splitString:將字符串按指定方式分割,獲取指定位置的數(shù)
復(fù)制代碼 代碼如下:
DELIMITER $$
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',',',1);
3.過(guò)程splitString 將字符串分割,并放到臨時(shí)表tmp_split 里面
復(fù)制代碼 代碼如下:
DELIMITER $$
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_split_TotalLength(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_split(f_string,f_delimiter,i));
end while;
END$$
call splitString('a,s,d,f,g,h,j',',');
SELECT * from tmp_split;
相關(guān)文章
MySQL高級(jí)學(xué)習(xí)筆記(三):Mysql邏輯架構(gòu)介紹、mysql存儲(chǔ)引擎詳解
這篇文章主要介紹了Mysql邏輯架構(gòu)介紹、mysql存儲(chǔ)引擎,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-04-04MySQL下常見(jiàn)的啟動(dòng)失敗與備份失敗問(wèn)題的解決教程
這篇文章主要介紹了MySQL下常見(jiàn)的啟動(dòng)失敗與備份失敗問(wèn)題的解決教程,示例環(huán)境基于Linux系統(tǒng),需要的朋友可以參考下2015-11-11mysql下mysql-udf-http效率測(cè)試小記
看到張宴的博客上關(guān)于"http/rest客戶端的文章",怎樣安裝啥的直接都跳過(guò),下面直接進(jìn)入測(cè)試階段。2011-08-08Mysql事務(wù)并發(fā)臟讀+不可重復(fù)讀+幻讀詳解
這篇文章主要介紹了Mysql事務(wù)并發(fā)臟讀+不可重復(fù)讀+幻讀詳解,文章基于Mysql事務(wù)的相關(guān)資料展開(kāi)對(duì)主題的詳細(xì)介紹,具有一定的參考價(jià)值,需要的小伙伴可以參考一下2022-04-04mysql時(shí)間格式和Java時(shí)間格式的對(duì)應(yīng)方式
這篇文章主要介紹了mysql時(shí)間格式和Java時(shí)間格式的對(duì)應(yīng)方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-08-08