J'essaye de coder une fonction définie par l'utilisateur sous SQL Server 2005 qui va augmenter la partie entière de la valeur alphanumérique de un. Par exemple, uf_AlphanumericIncrease ('A000299')
doit renvoyer "A000300". Voici ce que j'ai fait jusqu'ici;Augmentation de la valeur alphanumérique dans la fonction définie par l'utilisateur
ALTER FUNCTION uf_AlphaNumericIncrement
(
@ID varchar(10)
)
RETURNS VARCHAR(10) AS
BEGIN
DECLARE @RES varchar(10);
IF SUBSTRING(@ID,LEN(@ID),1)='9'
SET @RES=SUBSTRING(@ID,1,LEN(@ID)-2)+CAST (CAST(SUBSTRING(@ID,LEN(@ID)-1,1) AS smallint)+1 AS VARCHAR(10))+'0';
ELSE
SET @RES=SUBSTRING(@ID,1,LEN(@ID)-1)+CAST (CAST(SUBSTRING(@ID,LEN(@ID),1) AS smallint)+1 AS VARCHAR(10));
RETURN @RES;
END
Mais comme vous pouvez le voir ne fonctionne que pour le dernier chiffre. Je dois l'obtenir sous la boucle ainsi elle peut fonctionner pour A002999 et ainsi de suite. Des idées? Editer: La valeur donnée peut avoir un préfixe alpha supérieur à un caractère, ou aucun.
Je n'ai pas de solution pour vous, mais je suis curieux, et il peut aider ceux qui répondent à votre question, ce que vous aimeriez A99 à incrémenter. (A100 est la réponse évidente, mais pouvez-vous composer avec le chiffre supplémentaire?) –
Le chiffre supplémentaire est correct quand la limite est atteinte. Dans ce cas, A100 est ce que fait mon interface graphique - j'en ai besoin sous UDF car je suis en train de coder un déclencheur qui va ajouter des données. –
Est-ce que la partie alpha est toujours un caractère ou est-ce que la fonction doit en gérer plus (par exemple 'AB001' => 'AB002')? – Joe