用前导零计算数字

时间:2018-12-30 21:53:30

标签: mysql

我需要使此过程适用于以VARCHAR存储的数据,并且某些行以前导零存储。

CREATE PROCEDURE getfreenum
             (IN num integer,
              IN maxval integer)
BEGIN
  SELECT CASE
       WHEN NOT EXISTS (SELECT *
                               FROM artikli t2
                               WHERE t2.sifra = num * power(10, maxval - floor(log10(num)) - 1)) THEN
         num * power(10, maxval - floor(log10(num)) - 1)
       ELSE
         min(t1.sifra) + 1
     END sifra
     FROM artikli t1
     WHERE floor(log10(num)) < maxval
           AND EXISTS (SELECT *
                              FROM artikli t2
                              WHERE sifra = num * power(10, maxval - floor(log10(num)) - 1))
           AND NOT EXISTS (SELECT *
                                  FROM artikli t2
                                  WHERE t2.sifra = t1.sifra + 1)
           AND t1.sifra >= num * power(10, maxval - floor(log10(num)) - 1) - 1
           AND t1.sifra < num * power(10, maxval - floor(log10(num)) - 1) + power(10, maxval - floor(log10(num)) - 1) - 1;
END;

这是DB Fiddle 查询#1应该返回00004

0 个答案:

没有答案