文档章节

MySQL字符串分组方法

第九1008
 第九1008
发布于 2017/04/26 16:53
字数 237
阅读 12
收藏 0

DELIMITER $$

USE `mysql_data`$$ -- 数据库名称

DROP FUNCTION IF EXISTS `func_split_TotalLength`$$

-- user_name=用户名
CREATE DEFINER=`user_name`@`%` FUNCTION `func_split_TotalLength`(f_string VARCHAR(1000),f_delimiter VARCHAR(5)) RETURNS INT(11)
BEGIN 
    # 计算传入字符串的总length 
    RETURN 1+(LENGTH(f_string) - LENGTH(REPLACE(f_string,f_delimiter,''))); 
END$$

DELIMITER ;

DELIMITER $$

USE `mysql_data`$$

DROP FUNCTION IF EXISTS `func_split`$$

-- user_name=用户名
CREATE DEFINER=`user_name`@`%` FUNCTION `func_split`(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$$

DELIMITER ;

DELIMITER $$

USE `mysql_data`$$

DROP PROCEDURE IF EXISTS `splitString`$$

-- user_name=用户名
CREATE DEFINER=`user_name`@`%` 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` (`NAME1` VARCHAR(128) NOT NULL) DEFAULT CHARSET=utf8; 
WHILE i < cnt 
DO 
    SET i = i + 1; 
    INSERT INTO tmp_split(`NAME1`) VALUES (func_split(f_string,f_delimiter,i)); 
END WHILE; 
END$$

DELIMITER ;

/*参数:要分隔的字符串,以什么分隔*/
CALL splitString('sdfsd,sdfsd,sdf,sdfsdf,sdfsd,sdfsdf',',')

SELECT * FROM tmp_split

本文转载自:

第九1008
粉丝 0
博文 12
码字总数 1784
作品 0
昌平
程序员
私信 提问
hive语句和mysql用法区别存档

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/quiet_girl/article/details/85246416 写在前面 mysql和hive版本: mysql版本:5.6.17 hive版本:2.1.1 一、G...

nana-li
2018/12/25
0
0
MySQL中concat函数 concat_ws函数 group_concat函数 repeat

MySQL中concat函数 使用方法: CONCAT(str1,str2,…) 返回结果为连接参数产生的字符串。如有任何一个参数为NULL ,则返回值为 NULL。 注意: 如果所有参数均为非二进制字符串,则结果为非二进...

adbug
2016/04/20
74
0
concat和concat_ws()区别及MySQL的几个实用字符串函数【转】

1、concat()函数 1.1 MySQL的concat函数可以连接一个或者多个字符串,如 mysql>select concat('10'); +--------------+ |concat('10') | +--------------+ |10 | +--------------+ 1 row in s......

houyiwujing
2011/12/15
184
0
经典SQL问题: 行转列

学校里面记录成绩,每个人的选课不一样,而且以后会添加课程,所以不需要把所有课程当作列。数据库grade里面数据如下图,假定每个人姓名都不一样,作为主键。本文以MySQL为基础,其他数据库会...

闪电
2015/09/19
27.1K
0
Oracle的sql (一 )

Oracle体系结构: 数据库 ----> 实例(orcl) ---> 表空间(逻辑单位)(用户) ---> 数据文件(物理单位) 地球 ----> 国家 ---> 省份(省长,公民) ---> 中粮,山川河流 Oracle和mysql区别: 收费, 不开...

勤劳的开发者px
2017/10/23
13
0

没有更多内容

加载失败,请刷新页面

加载更多

新建作业20191011121223

2.编写一个程序,发出一声警报,然后打印下面的文本: Startled by the sudden sound,Sally shouted,"By the Great Pumpkin,what was that!" #include<stdio.h>int main(){printf("\a");......

电子197朱妍
30分钟前
3
0
家庭作业——苗钰婷

2 编写一个程序,发出一声警报,然后打印下面的文本: Startled by the sudden sound, Sally shouted, "By the Great Pumpkin, what was that! #include<stdio.h>int main(){......

OSC_Okruuv
51分钟前
7
0
经典系统设计面试题解析:如何设计TinyURL(一)

原文链接: https://www.educative.io/courses/grokking-the-system-design-interview/m2ygV4E81AR 编者注:本文以一道经典的系统设计面试题:《如何设计TinyURL》的参考答案和解析为例,帮助...

APEMESH
52分钟前
7
0
2.面向对象设计原则(7条)

开闭原则 开闭原则的含义是:当应用的需求改变时,在不修改软件实体的源代码或者二进制代码的前提下,可以扩展模块的功能,使其满足新的需求。 实现方法 可以通过“抽象约束、封装变化”来实...

Eappo_Geng
54分钟前
10
0
8086汇编基础 debug P命令 一步完成loop循环

    IDE : Masm for Windows 集成实验环境 2015     OS : Windows 10 x64 typesetting : Markdown    blog : my.oschina.net/zhichengjiu    gitee : gitee.com/zhichengjiu   ......

志成就
58分钟前
9
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部