【问题标题】:Remove consecutive duplicate characters from string从字符串中删除连续的重复字符
【发布时间】:2019-01-08 13:00:10
【问题描述】:

我正在尝试构建一个从字符串中删除重复字符的函数。只有彼此跟随的字符。例如: 'AAABBBCCCDDAABB' 必须给出 'ABCDAB'。我做了以下代码,但它不起作用。你能帮忙吗?我是Mysql开发的新手...

CREATE DEFINER=`root`@`localhost` FUNCTION `REMOVE_DUPLICATE_CHAR_FROM_STRING`(myString VARCHAR(50)) RETURNS varchar(50) CHARSET utf8mb4 COLLATE utf8mb4_general_ci
NO SQL
BEGIN
DECLARE tempString VARCHAR(50) DEFAULT '';
DECLARE sPreviousChar VARCHAR(1);
DECLARE sCurrentChar VARCHAR(1);
DECLARE inti INTEGER DEFAULT 1;
set tempString = myString;
IF LENGTH(tempString) > 0 THEN
    WHILE(inti <= LENGTH(tempString)) DO
        SET sCurrentChar = SUBSTRING(tempString, inti, 1);
        IF inti > 1 THEN
           SET sPreviousChar = SUBSTRING(tempString, inti - 1, 1);
            IF sCurrentChar = sPreviousChar THEN
                SET tempString = CONCAT(LEFT(tempString, inti - 1), SUBSTRING(tempString, inti, 1000));
            END IF;
        END IF;
        SET inti = inti + 1;
    END WHILE;
    RETURN (tempString);
ELSE
    RETURN 0;
END IF;    
END

【问题讨论】:

    标签: mysql function duplicates


    【解决方案1】:
    CREATE FUNCTION `REMOVE_DUPLICATE_CHAR_FROM_STRING` (`aString` VARCHAR(50) )
    RETURNS VARCHAR(50) CHARSET utf8
    BEGIN
        DECLARE result VARCHAR(50) DEFAULT '';
        DECLARE prev CHAR(1) DEFAULT '';
        DECLARE c CHAR(1) DEFAULT '';
        DECLARE i TINYINT DEFAULT 1;
        DECLARE len TINYINT;
    
        SET len = LENGTH(aString);
        WHILE(i <= len) DO
            SET c = SUBSTRING(aString, i, 1);
            IF c != prev THEN
                SET result = CONCAT(result, c);
                SET prev = c;
            END IF;
            SET i = i + 1;
        END WHILE;
        RETURN result;
    END
    

    【讨论】:

      猜你喜欢
      • 2019-09-02
      • 2017-04-03
      • 2015-01-26
      • 2018-08-05
      • 2018-10-21
      • 1970-01-01
      • 1970-01-01
      • 2019-11-29
      • 1970-01-01
      相关资源
      最近更新 更多