Добавление константы к каждые 3 числа числовой строки - PullRequest
0 голосов
/ 28 мая 2020

Я изо всех сил старался придумать лучший заголовок для вопроса, но это все, что я мог придумать. Что ж, я попытаюсь объяснить это на примере. Предположим, у меня есть: Установить x = 100200300; Установите y = 10; B Теперь я хочу добавить y ко всем первым трем числам, то есть «100», затем добавить его к «200» и так далее. Мне было интересно, могу ли я сделать это с помощью функции «выбрать влево» внутри al oop? Не знаю, как это применить, поэтому я ищу здесь помощь. Помоги мне, пожалуйста. Благослови

DELIMITER $$
CREATE PROCEDURE proc(

)
BEGIN

    DECLARE counter INT DEFAULT 1;
    set @x = '100200300400';
    set @y = 10;
    WHILE counter <= @x DO
        select concat(substring(@x,counter,3) + @y,substring(@x,(counter +3),3) + @y) x;
    END WHILE;

END$$

DELIMITER ;

1 Ответ

0 голосов
/ 28 мая 2020

Возможно

SET @X = 100200300;
SET @Y = 10;

select concat(substring(@x,1,3) + @y,substring(@x,4,3) + @y,substring(@x,7,3) + @y) x;

+-----------+
| x         |
+-----------+
| 110210310 |
+-----------+
1 row in set (0.001 sec)

Если x неизвестной длины DROP PROCEDURE IF EXISTS P; DELIMITER $$ СОЗДАТЬ ПРОЦЕДУРУ p (

)
BEGIN

    DECLARE counter INT DEFAULT 1;
    set @x = '100200300400';
    set @y = 10;
    SET @OUT = '';
    L:WHILE counter <= @x / 3 DO
          #SELECT COUNTER;
          IF @x is null or COUNTER > 10 THEN LEAVE L; END IF;
          SET @OUT = CONCAT(@OUT,substring(@x,counter,3) + @y);
          SET @X = REPLACE(@X,@out,'');

        #select concat(substring(@x,counter,3) + @y,substring(@x,(counter +3),3) + @y) x;
        SET COUNTER = COUNTER + 3;

    END WHILE;
    select @out;
END $$

DELIMITER ;

CALL P();

DELIMITER ;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...