mysql分割字符串应该如何实现呢?下面就为您介绍mysql分割字符串的实现方法步骤,希望可以让您对mysql分割字符串有更多的了解。

例如:update `edw_video` set company = substring(keyword,1,length(SUBSTRING_INDEX(keyword,",",1)))

名称:SPLIT_SUB_STR1(取得split字符串的第一段)

参数:str 要split的目标字符串 (输入格式为‘11,2,3,4,5,6’; 输出为‘2,3,4,5,6’)

delimiter 分隔符 (‘,’)

split1 输出第一项(‘11’)

CREATE DEFINER=`root`@`%` PROCEDURE `SPLIT_SUB_STR0`(inout str VARCHAR(1000) ,delimiter VARCHAR(1), out split1 VARCHAR(20))

BEGIN

# 名称 SPLIT_SUB_STR1 取得分割字符串的第一段字符

# 参数inout str VARCHAR(1000) ,delimiter VARCHAR(1), out split0 VARCHAR(20)

#        输入完整字符串,输出去掉取得第一项后的字符串; 分隔符; 输出split的第一个项目

#分割出第一段字符串不包括分隔符的长度

DECLARE SUB_STR_LENGTH INT;

# SUBSTRING_INDEX函数取得目标字符串左侧第n个分割符左侧的部分,n为负时返回右侧第n个的右部分

SET SUB_STR_LENGTH = length(SUBSTRING_INDEX(str,delimiter,1));

#截取第一段字符串,不包括分隔符,放入输出参数里

SET split0 = substring(str, 1, SUB_STR_LENGTH);

# 取得去掉第一个字符串和分隔符的字符串,进行下次循环取得下个字符串

SET str = substring(str, SUB_STR_LENGTH + 2 );

#测试一下输出是否正确

#SELECT SUB_STR_LENGTH, SUB_STR_SPLIT0, STR;

END

调用实例

CREATE DEFINER=`root`@`%` PROCEDURE `test`()

BEGIN

#目标字符串

set @a = ’1,2,3,4,5,6,12‘;

# 分隔符

set @c = ',';

#

REPEAT

# 调用上面的

END;

现在有个表 app

id    app_name

1      a

2      b

3      c

4     d

在数据库中传一个 1,2,3过来 要得到 a,b,c这样的结果

– 函数如下:

– i_str 表示传进去的 字符串    f_delimit 表示分隔符

drop function if exists func_get_split_string;

create function func_get_split_string(i_str varchar(128), f_delimit varchar(3))

returns varchar(512)

begin

set @rs = '';

set @i = length(i_str) – length(replace(i_str,f_delimit,''));  — 算出分隔符的总数

set @sub_str = i_str;

set @left_str = i_str;

while @i>0                — 有多少个分隔符就循环多少遍

do

set @sub_str = substr(@left_str,1,instr(@left_str,f_delimit)-1);            — 得到分隔符前面的字符串

set @left_str = substr(@left_str,length(@sub_str)+length(f_delimit)+1);     — 得到分隔符后面的字符串

set @n = trim(@sub_str);

select  COALESCE(max(app_name),'') into @split_string from app where id = @n;   — 用分隔符前面的字符串关联查询表

set @i = @i – 1;

set @rs = concat(@rs,',',@split_string);            –  将得到的结果放到结果串

end while;

set @n = trim(@left_str);

select  COALESCE(max(app_name),'') into @split_string from app where id = @n;

set @rs = concat(@rs,',',@split_string);

return substr(@rs,2) ;    — 返回去掉最前面的 ,

end;

– 调用函数的办法

select func_get_split_string('1,2,3',',');

注意:

1. 遇到这样的错误

This function has none of DETERMINISTIC, NO SQL, or READS SQL DATA in its de

解决办法 执行 :set global log_bin_trust_function_creators=TRUE;

2. 在函数中 select @变量 := 字段 from 表名 ;这样的语句是不能通过的, 但是在过程里面是可以的。

Not allowed to return a result set from a function

mysql函数 分割字符串_MySQL分割字符串的实现,mysql 字符串分割函数相关推荐

  1. mysql 长度为1 的空字符串_MYSQL,如果定义了一个字符串的字段,长度为255,那么当我添加一个空字符串数据时占用空间吗?...

    你的位置: 问答吧 -> PHP -> 问题详情 MYSQL,如果定义了一个字符串的字段,长度为255,那么当我添加一个空字符串数据时占用空间吗? MYSQL,如果定义了一个字符串的字段, ...

  2. mysql数据库管理系统模式_MYSQL命令行模式管理MySql的一点心得

    MYSQL命令行模式管理MySql的一点心得 MYSQL命令行模式管理MySql的一点心得 MySql数据库是中小型网站后台数据库的首选,因为它对非商业应用是免费的.网站开发者可以搭建一个" ...

  3. mysql打开无法控制_MySQL不能启动和停止 MySQL各种解决方法教程

    MySQL不能启动和停止 MySQL各种解决方法教程 本文章总结了种MySQL无法启动.无法停止解决办法,包括在windows系统,linux系统中mysql不能启动与停止的解决办法,有需了解的朋友可 ...

  4. mysql 用户管理表_Mysql—用户表详解(mysql.user)

    MySQL 数据库 Mysql-用户表详解(mysql.user) MySQL是一个多用户管理的数据库,可以为不同用户分配不同的权限,分为root用户和普通用户,root用户为超级管理员,拥有所有权限 ...

  5. mysql读写分离 同步_MySQL数据库的同步配置+MySql读写分离

    使用mysql主从复制的好处有: 1.采用主从服务器这种架构,稳定性得以提升.如果主服务器发生故障,我们可以使用从服务器来提供服务. 2.在主从服务器上分开处理用户的请求,可以提升数据处理效率. 3. ...

  6. mysql 安装在路由器_MySQL如何安装?安装MySQL数据库的三种方法

    MySQL如何安装?安装MySQL数据库的三种方法 目录 安装MySQL的方式常见的有三种: rpm包形式 通用二进制形式 源码编译 1,rpm包形式 (1) 操作系统发行商提供的 (2) MySQL ...

  7. 为啥mysql安装不上_mysql安装不上怎么办mysql安装失败原因和解决方法_MySQL

    mysql数据库安装不了了!mysql最后一步安装不上!mysql就是安装不上!是不是很头疼,很伤脑筋,现在大家不用着急了,小编为大家整理了mysql安装失败的原因以及mysql安装失败的解决方法,抓 ...

  8. mysql 查找字符位置_MySQL数据库中如何查看一个字符串在另一个字符串中第一次出现的位置呢?...

    摘要: 下文讲述MySQL数据库中查看一个字符串第一次出现的位置的方法分享,如下所示: 实现思路: 方式1: 使用系统函数LOCATE(substr,str)即可获取 substr字符串在str中第一 ...

  9. mysql 月的周_mysql 按月/按周集锦统计函数 DATE_FORMAT() 函数_mysql

    mysql 按月/按周汇总统计函数 DATE_FORMAT() 函数 定义和用法 DATE_FORMAT() 函数用于以不同的格式显示日期/时间数据. 语法 DATE_FORMAT(date,form ...

  10. mysql nextval同步锁_mysql中实现类似oracle中的nextval函数

    我们知道mysql中是不支持sequence的,一般是建表的时间使这个字段自增. 如       create table table_name(id int auto_increment prima ...

最新文章

  1. pythonclass全局变量_Python-多处理全局变量更新未返回给父级
  2. 2018-2019-1 20165212 20165313 2016522 实验一 开发环境的熟悉
  3. 斯坦福大学#深度多任务学习与元学习#视频及讲义下载
  4. Solr缓存清空、重新加载与修改
  5. Pandas 中的这 3 个函数,没想到竟成了我数据处理的主力
  6. 网页校验器:含有Flash的网页如何通过校验 ?
  7. C#将word转换为HTML格式
  8. 全网首发:JAVA中的+=,会直接把float赋值给int变量,编译器不报错
  9. SpringBoot(尚硅谷)
  10. 通俗理解博弈论相关术语
  11. Ubuntu20安装搜狗拼音输入法
  12. 手机查看企业qq邮件服务器,QQ企业邮箱怎么用?手机QQ邮箱收发邮件的方法
  13. C语言基础级——N维数组定义与使用
  14. 贵州支教之第二天(11月8日)
  15. java计算机二级知识点、易错点整理(一)
  16. 免费获得minecraft账号,快来试试!!!
  17. 【报告分享】2020年天猫零食市场分析报告-魔镜(附下载)
  18. cmd打开时提示“系统找不到指定的路径”“the system cannot find the path specified”
  19. 360怎样修改wifi服务器地址,360路由器怎么改wi-fi密码(无线密码)? | 192路由网
  20. instagram分享_Facebook,Twitter,Instagram,Google等使用的字体和颜色

热门文章

  1. [C语言]转置矩阵:编程计算并输出m×n阶矩阵的转置矩阵。其中,m、n和矩阵元素均由用户从键盘输入。已知m和n的值都不超过10。
  2. 从体验的角度比较dota2与lol
  3. 阻止ios播放视频自动全屏
  4. 说说缓存,说说Redis
  5. python logging模块默认日志级别_Python 日志模块logging
  6. (召集)你喜欢什么类型的数字?
  7. 电子电气架构——测试工具:Canalyzer快速入门
  8. 推荐系统的性能评估(RMSE、MAE、F1 core、A/B testing、CTR和CR、ROI和QA)
  9. Android 8.0后台运行策略学习
  10. 基于STM32的MPU6050