добавление запятой к результату после каждой итерации в while l oop MySQL - PullRequest
0 голосов
/ 28 мая 2020

Код, которым я делюсь ниже, вычитает 10 из первых 3 цифр номера, который у меня есть, а затем сохраняет его в новой переменной и продолжает выполнять ту же операцию до конца. Мне было интересно, могу ли я добавить ',' после каждого раза, когда он выполняет расчет, скажем, на первой итерации он становится 177, тогда он должен добавить кому после него, чтобы отделить их друг от друга, пока вывод кода выглядит как «177222290», но я хочу, чтобы он выглядел как «177 222 290». Если кто-то может мне помочь, пожалуйста. Я также пробовал разделитель ',', где я устанавливаю concat в @OUT, но это не сработало.

DELIMITER $$
CREATE PROCEDURE proccc(
)
BEGIN
    set @x = '187232300';
    set @OUT = '';
    set @y = 10;
    set @counter = 1 ;
    L:WHILE @counter <= (@x/3) DO
    if @x is null or @counter > CHAR_LENGTH(@x) then leave L; end if;
        SET @OUT = CONCAT(@OUT,substring(@x,@counter,3 ) - @y  );
        set @counter= @counter+3;
    END WHILE;
   select @OUT;
END$$
DELIMITER ;

1 Ответ

0 голосов
/ 28 мая 2020
CREATE PROCEDURE add_commas( IN num BIGINT )
BEGIN
SET @buffer := '';
cycle: 
WHILE num > 0 DO
    SET @buffer := CONCAT(num MOD 1000, ',', @buffer);
    SET num := num DIV 1000;
END WHILE;
SELECT TRIM(TRAILING ',' FROM @buffer);
END 

скрипка

...