Bonjour,

Je cherche à avoir une "fonction" qui permet de faire un incrément de 1 sur une chaine de caractères.

J'ai trouvé ceci :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
declare @num varchar(13) = 'BALT247';
declare @newNum varchar(13);
 
  set @newnum = case when PATINDEX('%[0-9]%', @num) > 0 then
      left(@num, PATINDEX('%[0-9]%', @num)-1) -- Text part
      + -- concat
      right( REPLICATE('0', LEN(@num) - PATINDEX('%[0-9]%', @num)+1) + convert( varchar, convert(int, right(@num, LEN(@num) - PATINDEX('%[0-9]%', @num)+1))+1), LEN(@num) - PATINDEX('%[0-9]%', @num)+1)
    else
       @num
    end
 
select @num, @newnum
Cette fonction détermine la longueur de la partie numérique, la caste, effectue l'incrément de la partie numérique et reconverti le tout de nouveau en texte.

Donc faire l'incrémentation de ceci fonctionne: "BALT247" => "BALT248".

Maintenant, mon souci c'est justement de faire l'incrément de ceci : "BALT999".

Je m'attends à avoir "BALU000". la fonction me ressort "BALT000" ce qui est techniquement faux.


Est-ce que cela serait tout simplement possible?

Merci.