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 :
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.
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
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.
Partager