Удалить последовательные повторяющиеся символы из строки - PullRequest
0 голосов
/ 08 января 2019

Я пытаюсь создать функцию, которая удалит повторяющиеся символы из строки. Только персонажи, которые следуют друг за другом. Например: «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

1 Ответ

0 голосов
/ 09 января 2019
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
...