当前位置: 代码迷 >> 综合 >> mysql处理字符串的两个绝招:substring_index,concat
  详细解决方案

mysql处理字符串的两个绝招:substring_index,concat

热度:33   发布时间:2023-12-16 13:27:42.0
mysql处理字符串的两个绝招:substring_index,concat
  最近老是碰到要处理数据库中字符串的处理,发现用来用去也就是这两个函数:
  1、substring_index(str,delim,count)
   str:要处理的字符串
   delim:分隔符
   count:计数
  例子:str=
  substring_index(str,'.',1)
  结果是:www
  substring_index(str,'.',2)
  结果是:www.google
  也就是说,如果count是正数,那么就是从左往右数,第N个分隔符的左边的全部内容
  相反,如果是负数,那么就是从右边开始数,第N个分隔符右边的所有内容,如:
  substring_index(str,'.',-2)
  结果为:google.com
  有人会为,如果我呀中间的的google怎么办?
  很简单的,两个方向:
  1、从右数第二个分隔符的右边全部,再从左数的第一个分隔符的左边:
  substring_index(substring_index(str,'.',-2),‘.’,1);
  2、你懂得!
  2,concat是连接几个字符串,可以多个哦。
  concat('wo','lin','xue','bin')
  结果就是wolinxuebin

转自:http://www.educity.cn/wenda/401026.html

//mysq进行字符串的分割函数

CREATE PROCEDURE test_SplitString(IN str LONGTEXT,IN delimiter varchar(5))
BEGIN
declare cnt int default 0;
declare i int default 0;
declare item VARCHAR(500);


set cnt = 1 + (length(str) - length(replace(str,delimiter,'')));

DROP TABLE IF EXISTS tmp_split_ss;

create temporary table tmp_split_ss(
val varchar(128) not null
) DEFAULT CHARSET=utf8;

while i < cnt do
set i = i + 1;
set item=reverse(substring_index(reverse(substring_index(str,delimiter,i)),delimiter,1));
SELECT item;
insert into tmp_split_ss(val) values (item);
end while;
END
  相关解决方案