mysql 存储过程 字符串分割字符串_利用MySQL存储过程分割字符串

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

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

apple

banana

orange

pears

grape

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

1、具体函数:

# 函数:func_split_TotalLength

DELIMITER $$

DROPfunctionIF EXISTS `func_split_TotalLength` $$

CREATEDEFINER=`root`@`%`FUNCTION`func_split_TotalLength`

(f_string varchar(1000),f_delimitervarchar(5))RETURNSint(11)

BEGIN

# 计算传入字符串的总length

return1+(length(f_string) - length(replace(f_string,f_delimiter,'')));

END$$

DELIMITER;

# 函数:func_split

DELIMITER $$

DROPfunctionIF EXISTS `func_split` $$

CREATEDEFINER=`root`@`%`FUNCTION`func_split`

(f_string varchar(1000),f_delimitervarchar(5),f_orderint)RETURNSvarchar(255) CHARSET utf8

BEGIN

# 拆分传入的字符串,返回拆分后的新字符串

declareresultvarchar(255)default'';

setresult = reverse(substring_index(reverse(substring_index(f_string,f_delimiter,f_order)),f_delimiter,1));

returnresult;

END$$

DELIMITER;

# 存储过程:splitString

DELIMITER $$

DROPPROCEDUREIF EXISTS `splitString` $$

CREATEPROCEDURE`splitString`

(INf_stringvarchar(1000),INf_delimitervarchar(5))

BEGIN

# 拆分结果

declarecntintdefault0;

declareiintdefault0;

setcnt = func_split_TotalLength(f_string,f_delimiter);

DROPTABLEIF EXISTS `tmp_split`;

createtemporarytable`tmp_split` (`status`varchar(128)notnull)DEFAULTCHARSET=utf8;

while i 

do

seti = i + 1;

insertintotmp_split(`status`)values(func_split(f_string,f_delimiter,i));

endwhile;

END$$

DELIMITER;

2、测试是否能成功分割

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

select*fromtmp_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*fromfruitwherein(select*fromtmp_split);

以上就是利用MySQL存储过程分割字符串的方法介绍。

【编辑推荐】

【责任编辑:段燃 TEL:(010)68476606】

点赞 0

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要完成 MySQL 中的字符串分割,可以使用 SUBSTRING_INDEX 函数。该函数可以根据指定的分隔符将字符串分成多个部分,并返回其中的一个部分。 例如,如果我们有一个字符串 "apple,banana,orange",并且想要将其分成三个部分,可以使用以下 SQL 语句: ``` SELECT SUBSTRING_INDEX('apple,banana,orange', ',', 1) AS part1, SUBSTRING_INDEX(SUBSTRING_INDEX('apple,banana,orange', ',', 2), ',', -1) AS part2, SUBSTRING_INDEX('apple,banana,orange', ',', -1) AS part3; ``` 这个语句将字符串分成三个部分,并将它们分别存储在 part1、part2 和 part3 变量中。在这里,我们使用了两次 SUBSTRING_INDEX 函数来获取第二个部分。首先将字符串分成两部分,然后再从第二部分中提取最后一个子字符串(也就是第二部分)。 如果你要使用 for 循环来分割字符串,可以将上面的 SQL 语句放在循环体内,并使用变量来代替字符串。例如: ``` DECLARE str VARCHAR(255) DEFAULT 'apple,banana,orange'; DECLARE i INT DEFAULT 1; DECLARE part1, part2, part3 VARCHAR(255); WHILE i <= 3 DO IF i = 1 THEN SET part1 = SUBSTRING_INDEX(str, ',', 1); ELSEIF i = 2 THEN SET part2 = SUBSTRING_INDEX(SUBSTRING_INDEX(str, ',', 2), ',', -1); ELSE SET part3 = SUBSTRING_INDEX(str, ',', -1); END IF; SET i = i + 1; END WHILE; ``` 这个代码片段将字符串 "apple,banana,orange" 分成三部分,并将它们存储在 part1、part2 和 part3 变量中。注意,我们使用了一个 while 循环来迭代三次,并且使用了一个 if-else 语句来确定当前循环中正在处理的部分。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值