Выберите следующее «свободное» целое число на основе ввода

0

У меня есть таблица, которая содержит некоторые данные, которые (среди других столбцов) имеют автоинкрементный столбец "id" и один столбец "sifra".

Мне нужно найти следующий бесплатный номер "sifra" на основе некоторого ввода (числа).

Если у меня есть следующие значения в моей таблице для столбца "sifra":

  • 1
  • 2
  • 3
  • 4
  • 6
  • 11
  • 12
  • 14
  • 322
  • 323
  • 324
  • 678
  • 6790
  • 6810
  • 6812

Если я отправлю значение "1", mysql должен вернуть "10", потому что это следующее свободное целое с ведущим "1", и если я передаю "32", он должен вернуть "320".

Если я передаю "681", он должен вернуть "6811".

Это то, что я пробовал до сих пор:

 SELECT LEFT(MAX(a.sifra), 5) + 1 max_val
 FROM artikli as a
left join artikli as arttab
on a.sifra + 1 = arttab.sifra
WHERE a.sifra LIKE '" & sifra & "%'
Теги:

1 ответ

1
Лучший ответ

Вы можете использовать следующую хранимую процедуру:

delimiter $$
drop procedure if exists getfreenum $$
create procedure getfreenum(num int)
begin

    set @compare := (num * 10);

    set @maxId := (select sifra from artikli where sifra >=  @compare order by sifra asc limit 1);

    while @compare = @maxId do
        set @compare := @compare + 1;
        set @maxId = (select sifra from artikli where sifra >=  @compare order by sifra asc limit 1);
    end while;

    select @compare;
end $$
delimiter ;
  • 0
    Спасибо, именно то, что мне было нужно !!!

Ещё вопросы

Сообщество Overcoder
Наверх
Меню