MySQL字符串由逗号运算符分隔

MySQL字符串由逗号运算符分隔,第1张

概述我有String asdasdwdfef,rgrgtggt,weef,我希望输出像表格一样,如下图所示id decription 1 asdasdwdfef 2 rgrgtggt 3 weef 为此,我创建了一个程序这是我的程序DELIMITER ;; CREATE Procedure Split(_RowDat

我有String asdasDWdfef,rgrgtggt,weef,我希望输出像表格一样,如下图所示

ID      decription1       asdasDWdfef2       rgrgtggt3       weef

为此,我创建了一个程序
这是我的程序

DEliMITER ;;CREATE Procedure Split(_RowData text,_Delimeter text)BEGIN    DECLARE _Iterator INT default 1;    DECLARE _Foundindex INT;    DECLARE _Data varchar(255);    SET _Foundindex = LOCATE(_Delimeter,_RowData);    DROP table IF EXISTS _RtnValue;    CREATE temporary table _RtnValue(ID INT auto_INCREMENT NOT NulL,description text,primary key(ID));    WHILE _Foundindex > 1 DO        INSERT INTO _RtnValue (description)        SELECT        _Data = LTRIM(RTRIM(SUBSTRING(_RowData,1,_Foundindex - 1)));        set _RowData = SUBSTRING(_RowData,_Foundindex + LENGTH(_Delimeter) / 2,LENGTH(_RowData));        SET _Iterator = _Iterator + 1;        SET _Foundindex = LOCATE(_Delimeter,_RowData);    END WHILE;    INSERT INTO _RtnValue(description) SELECT _Data = LTRIM(RTRIM(_RowData));    select * from _RtnValue;END

但是当我使用以下命令执行它时

call Split('asdasDWdfef,weef',',');

它给了我以下输出:

ID      decription1       NulL2       NulL3       NulL

请让我知道如何解决这个问题.
我正在使用MysqL.最佳答案我得到了答案

首先创建新功能

CREATE FUNCTION SPliT_STR(x VARCHAR(255),delim VARCHAR(12),pos INT)RETURNS VARCHAR(255)RETURN REPLACE(SUBSTRING(SUBSTRING_INDEX(x,delim,pos),LENGTH(SUBSTRING_INDEX(x,pos -1)) + 1),'');

然后创建存储过程

DEliMITER ;;CREATE PROCEDURE Split(in fullstr varchar(255))BEGIN    DECLARE a INT Default 0 ;    DECLARE str VARCHAR(255);    DROP table IF EXISTS my_temp_table;    CREATE temporary table my_temp_table(ID INT auto_INCREMENT NOT NulL,primary key(ID));    simple_loop: LOOP        SET a=a+1;        SET str=SPliT_STR(fullstr,",a);        IF str='' THEN            LEAVE simple_loop;        END IF;        #Do Inserts into temp table here with str going into the row        insert into my_temp_table (description) values (str);   END LOOP simple_loop;   select * from my_temp_table;END

之后我通过调用Split调用它(‘asas,d,sddf,dfd’);它给了我想要的输出.

每个建议都是Thanx.

总结

以上是内存溢出为你收集整理的MySQL字符串逗号运算符分隔全部内容,希望文章能够帮你解决MySQL字符串由逗号运算符分隔所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/1168829.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-02
下一篇 2022-06-02

发表评论

登录后才能评论

评论列表(0条)

保存