美文网首页
字符串分割

字符串分割

作者: xintop | 来源:发表于2023-01-27 17:45 被阅读0次

    SQLSERVER

    CREATE FUNCTION [dbo].[Fun_SplitStr]
    (
        @originalStr      VARCHAR(8000), --要分割的字符串
        @split varchar(100)  --分隔符号
    )
    RETURNS @temp TABLE(Result VARCHAR(100))
    AS
    BEGIN
        DECLARE @result AS VARCHAR(100);   --定义变量用于接收单个结果 
        
        SET @originalStr = @originalStr + @split ;  
          
        WHILE (@originalStr <> '')
        BEGIN
            SET @result = LEFT(@originalStr, CHARINDEX(@split, @originalStr, 1) -1) ;  
            
            INSERT @temp VALUES(@result) ;  
            
            --STUFF()函数用于删除指定长度的字符,并可以在指定的起点处插入另一组字符。
            SET @originalStr = STUFF(@originalStr, 1, CHARINDEX(@split, @originalStr, 1), '');
        END 
        RETURN
    END
    GO
    

    MYSQL

    CREATE DEFINER=`root`@`%` PROCEDURE `split`(IN _string VARCHAR(8000),StrSeprate varchar(10))
    BEGIN
     # 求分割符号','的位置
    DECLARE _index INT;
      
    #使用临时表存储分割后的结果
    DROP TEMPORARY TABLE IF EXISTS tmp_strs;
    CREATE TEMPORARY TABLE tmp_strs(
    str INT(10) UNSIGNED
    );
      
    SET _index = LOCATE(StrSeprate,_string);
    WHILE _index > 0
    DO
    INSERT INTO tmp_strs VALUES(LEFT(_string,_index-1));#将子字符串存入临时表
    SET _string =SUBSTR(_string FROM _index+1);
    SET _index = LOCATE(StrSeprate,_string);
    END WHILE;
      
    IF LENGTH(_string) >= 0 THEN
    INSERT INTO tmp_strs VALUES(_string);
    select * from tmp_strs;
    drop table tmp_strs;
    END IF;
     
    END
    

    使用方法

    select * 
    from Fun_SplitStr((select pickname from users where username='123456'),',');
    

    相关文章

      网友评论

          本文标题:字符串分割

          本文链接:https://www.haomeiwen.com/subject/yymehdtx.html