Existe-t-il un moyen de faire un incrément SQL sur un varchar ?
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:
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.