程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> MySQL綜合教程 >> 利用MySQL存儲過程分割字符串

利用MySQL存儲過程分割字符串

編輯:MySQL綜合教程

MySQL存儲過程可以用於分割字符串,下面就為您詳細介紹這種MySQL存儲過程的用法,供您參考學習之用。

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

apple
banana
orange
pears
grape

然後使用where in()方法可以查詢。

1、具體函數:

  1. # 函數:func_split_TotalLength 
  2. DELIMITER $$ 
  3. DROP function IF EXISTS `func_split_TotalLength` $$ 
  4. CREATE DEFINER=`root`@`%` FUNCTION `func_split_TotalLength` 
  5. (f_string varchar(1000),f_delimiter varchar(5)) RETURNS int(11) 
  6. BEGIN 
  7.     # 計算傳入字符串的總length 
  8.     return 1+(length(f_string) - length(replace(f_string,f_delimiter,''))); 
  9. END$$ 
  10. DELIMITER; 
  1. # 函數:func_split 
  2. DELIMITER $$ 
  3. DROP function IF EXISTS `func_split` $$ 
  4. CREATE DEFINER=`root`@`%` FUNCTION `func_split` 
  5. (f_string varchar(1000),f_delimiter varchar(5),f_order int) RETURNS varchar(255) CHARSET utf8 
  6. BEGIN 
  7.     # 拆分傳入的字符串,返回拆分後的新字符串 
  8.         declare result varchar(255) default ''; 
  9.         set result = reverse(substring_index(reverse(substring_index(f_string,f_delimiter,f_order)),f_delimiter,1)); 
  10.         return result; 
  11. END$$ 
  12. DELIMITER; 
  1. # 存儲過程:splitString 
  2. DELIMITER $$ 
  3. DROP PROCEDURE IF EXISTS `splitString` $$ 
  4. CREATE PROCEDURE `splitString` 
  5. (IN f_string varchar(1000),IN f_delimiter varchar(5)) 
  6. BEGIN 
  7. # 拆分結果 
  8. declare cnt int default 0; 
  9. declare i int default 0; 
  10. set cnt = func_split_TotalLength(f_string,f_delimiter); 
  11. DROP TABLE IF EXISTS `tmp_split`; 
  12. create temporary table `tmp_split` (`status` varchar(128) not null) DEFAULT CHARSET=utf8; 
  13. while i < cnt 
  14. do 
  15.     set i = i + 1; 
  16.     insert into tmp_split(`status`) values (func_split(f_string,f_delimiter,i)); 
  17. end while; 
  18. END$$ 
  19. DELIMITER; 

2、測試是否能成功分割

  1. call splitString("apple,banana,orange,pears,grape",","); 
  2. 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()查詢

  1. # 先傳入字符串,分割後保存在臨時表tmp_split中 
  2. call splitString("apple,banana,orange,pears,grape",","); 
  3. # 將查詢的結果作為其他查詢的條件來使用 
  4. select * from fruit where in(select * from tmp_split); 

以上就是利用MySQL存儲過程分割字符串的方法介紹。

MySQL字符串相加函數用法示例

MySQL截取字符串函數方法

MySQL分割字符串的實現

深入研究MySQL結果字符串

快速開啟MySQL慢日志查詢的方法

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved