MySQL存储过程可以用于分割字符串,下面就为您详细介绍这种MySQL存储过程的用法,供您参考学习之用。

现有一段字符串,如apple,banana,orange,pears,grape,要把它按照逗号(,)分割成:

apple   banana   orange   pears   grape 

然后使用where in()方法可以查询。

1、具体函数:

# 函数:func_split_TotalLength 

DELIMITER $$

DROP function IF EXISTS `func_split_TotalLength` $$

CREATE DEFINER=`root`@`%` 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;

# 函数:func_split 

DELIMITER $$

DROP function IF EXISTS `func_split` $$

CREATE DEFINER=`root`@`%` 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;

# 存储过程:splitString 

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` (`status` varchar(128) not null) DEFAULT CHARSET=utf8;

while i < cnt

do

set i = i + 1;

insert into tmp_split(`status`) values (func_split(f_string,f_delimiter,i));

end while;

END$$

DELIMITER;

2、测试是否能成功分割

call splitString("apple,banana,orange,pears,grape",",");

select * from tmp_split;

运行结果如下,说明分割成功:

mysql> call splitString("apple,banana,orange,pears,grape",",");  
select * from tmp_split;  
Query OK, 1 row affected  
+--------+   | status |   +--------+   | apple  |   | banana |   | orange |   | pears  |   | grape  |   +--------+   5 rows in set  
mysql> 

3、应用where in()查询

# 先传入字符串,分割后保存在临时表tmp_split中   
call splitString("apple,banana,orange,pears,grape",",");   
   # 将查询的结果作为其他查询的条件来使用   
select * from fruit where in(select * from tmp_split);   
以上就是利用MySQL存储过程分割字符串的方法介绍。

mysql下将分隔字符串转换为数组的更多相关文章

  1. PHP文本处理之中文汉字字符串转换为数组

    在PHP中我们可以通过str_split 将字符串转换为数组,但是却对中文无效,下面记录一下个人将中文字符串转换为数组的方法. 用到的PHP函数 mb_strlen - 获取字符串的长度 mb_sub ...

  2. 【php】php分隔字符串为数组

    工作中会经常分隔字符串为数组,我们可以用php内置函数str_split(),可是有时候字符串中包含中文,切割后会乱码,比如 print_r(str_split('dw氛围fesf',3)); 输出 ...

  3. PHP文本处理 中文汉字字符串 转换为数组

    在PHP中我们可以通过str_split 将字符串转换为数组,但是却对中文无效,下面记录一下个人将中文字符串转换为数组的方法. 用到的PHP函数 mb_strlen — 获取字符串的长度 functi ...

  4. 微信开发所需要的的方法(签名认证、数组转字符串方法、将xml字符串转换为数组、发送xml请求方法)

    //将xml字符串转换为数组 public function xmlToArray($xml){ $array_data = json_decode(json_encode(simplexml_loa ...

  5. 【Java面试题】17 如何把一个逗号分隔的字符串转换为数组? 关于String类中split方法的使用,超级详细!!!

    split 方法:将一个字符串分割为子字符串,然后将结果作为字符串数组返回. stringObj.split([separator],[limit])参数:stringObj   必选项.要被分解的 ...

  6. SQL处理数组,字符串转换为数组

    原文转载自:http://hi.baidu.com/gagahjt/item/fd081316450f05028ebde413 一.按指定符号分割字符串,返回分割后的元素个数,方法很简单,就是看字符串 ...

  7. SQL字符串转换为数组

    /*一.按指定符号分割字符串,返回分割后的元素个数,方法很简单,就是看字符串中存在多少个分隔符号,然后再加一,就是要求的结果. -----rtrim(@str)去掉 @str右边的字符 ltrim(@ ...

  8. [Shell] 分隔字符串为数组

    #!/bin/bash tmp="test,girl,boy,love" OLD_IFS="$IFS" IFS="," arr=($a) I ...

  9. eval()将json 字符串转换为数组

    json ={ GW:[{id:"655",mc:"董事"},{id:"656",mc:"书记"},{id:" ...

随机推荐

  1. KSImageNamed 安装后无效解决方法

    UIImage的imageNamed提供文件名自动补全功能.使用[UIImage imageNamed:@"xxx"]时,该插件会扫描整个workspace中的图片文件.若安装后无 ...

  2. java中final的理解

    final修饰变量表示变量初始化后就不能再改变. 一.对于基础类型来说,用final修饰后其值不可以改变. 1. final int a; a = 5; 2.final int a = 5; 二.对于 ...

  3. jquery/js实现一个网页同时调用多个倒计时(最新的)

    <div class="time countdown_1" data-time="1449429731"> <span class=" ...

  4. java POI 解析excel 2003和2007 直接转为List<Map> 返回

    1.POI 官网下载jar包,3.5以上 2.项目导入jar包 3.参数:String数组--对应的excel列名对应的KEY,File  excel文件,sheetNumber ---excel的s ...

  5. Struts2向值栈中压入属性的方式

    Struts2在初始化Action的时候会先向值栈中压入一个action对象,里面包含了各个属性,这些属性是怎么被压进去的?或者说是根据什么来压入的?直到2016年5月5日才理解,原来是在初始化act ...

  6. 在树莓派(Raspberry Pi)上编译安装更新版本的Python

    Raspiban Wheezy上预装的Python3版本是3.2.3,本文将介绍升级到3.4.3的方法. 此文也适用于安装其它版本(比如最新版本)的Python. 我用的是B+型的树莓派,装的系统是2 ...

  7. 20160113 js中选择多个check一块删除

    js中<script type="text/javascript"> $(document).ready(function (e) { $("#Button2 ...

  8. KO中对象数组排序时,两个属性的优先顺序不一致时的排序实现

    function FromSort(left, right, asc) {    if (left.属性1 != "") {        if (right.属性1 != &qu ...

  9. 一段关于测试和自定义Attribute的代码

    来自<西夏普入门经典> using System; using System.Collections.Generic; using System.Linq; using System.Te ...

  10. IOS培训还值得么

    文章结构 1培训机构 各方面的评价 培训安排 收获 2 市场 就业 是否饱和 3 姿势 做好的事情 IOS这几年在IT界一直是热门的讨论话题,之前看着拉钩出品的北上广高薪岗位的人员技术流动也主要指向这 ...