zoukankan      html  css  js  c++  java
  • mysql下将分隔字符串转换为数组

    推荐 MySQL的FIND_IN_SET()函数

    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存储过程分割字符串的方法介绍。

    转 : https://www.cnblogs.com/waban/p/5196267.html

    转 : https://blog.csdn.net/myb0220/article/details/50459797

    参考: MySQL的FIND_IN_SET()函数

    转: https://www.cnblogs.com/mytzq/p/7090197.html

  • 相关阅读:
    php错误处理和异常处理
    (转)Android内存泄漏分析及调试
    (转)完美解决 Android WebView 文本框获取焦点后自动放大有关问题
    (转)Android studio 使用心得(五)—代码混淆和破解apk
    Execution failed for task ':app:clean'.
    (转)Android短信的发送和接收监听
    Android的AsyncQueryHandler详解
    (转)如何获得当前ListVIew包括下拉的所有数据?
    一个优秀的Android应用从建项目开始
    (转)Android性能优化——工具篇
  • 原文地址:https://www.cnblogs.com/fps2tao/p/10431080.html
Copyright © 2011-2022 走看看