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

  • 相关阅读:
    net core3.1 + electron 9.31.2 项目初始化
    DEV Express控件VScorllBar控件使用
    背包系统学习笔(tu)记(cao)
    C#应该掌握的一些东西
    服务器之间数据库拷贝
    photoshop AdobeCS6分享
    Random的实现原理
    C#利用System.Net发送邮件(带 抄送、密送、附件、html格式的邮件)
    jQuery validate验证控件remote缓存bug
    litrpa1.4版本正式发布了
  • 原文地址:https://www.cnblogs.com/fps2tao/p/10431080.html
Copyright © 2011-2022 走看看