OVH Cloud OVH Cloud

énumération alphabétique

4 réponses
Avatar
Pierre
Bonjour

Existe t-il une fonction transact sql (ou une astuce dans le cas échéant)
permettant d'incrémenter un Compteur alphabétique ?
Exemple de A -> B -> C .....-> AA ->.....AZ .... & ?

Toute suggestion me permettant d'explorer des possibilités me sauvera.

Thank !

4 réponses

Avatar
Med Bouchenafa
Brut de fonderie, il n'existe rien de tel à ma connaissance.
Par contre, cela ne devrait pas être trop compliqué de développer une fonction qui prennent un
entier et qui renvoie une chaîne de caractère suivant la règle que tu cites.

--
Bien cordialement
Med Bouchenafa


"Pierre" a écrit dans le message de news:

Bonjour

Existe t-il une fonction transact sql (ou une astuce dans le cas échéant)
permettant d'incrémenter un Compteur alphabétique ?
Exemple de A -> B -> C .....-> AA ->.....AZ .... & ?

Toute suggestion me permettant d'explorer des possibilités me sauvera.

Thank !


Avatar
Nicolas LETULLIER
Bonjour,

Tu peux ajouter un champ IDENTITY en INTEGER qui te génèrera ta clé
numérique, puis, comme le dit Med, utiliser une fonction de conversion pour
un autre champ calculé à partir de cette clé.

Exemple de fonction (à vérifier)

CREATE FUNCTION IntToAlpha(@Value INT) RETURNS VARCHAR(10) AS
BEGIN
DECLARE @i INT
DECLARE @Result VARCHAR(10)
SET @Result = ''

WHILE @Value > 0
BEGIN
SET @i = @Value - 26 * (@Value / 26)
IF (@i = 0) SET @i = 26
SET @Result = CHAR(@i + 64) + @Result
SET @Value = @Value / 26
IF @i = 26
SET @Value = @Value -1
END
RETURN @Result
END


Nicolas

"Pierre" a écrit dans le message de news:

Bonjour

Existe t-il une fonction transact sql (ou une astuce dans le cas échéant)
permettant d'incrémenter un Compteur alphabétique ?
Exemple de A -> B -> C .....-> AA ->.....AZ .... & ?

Toute suggestion me permettant d'explorer des possibilités me sauvera.

Thank !


Avatar
Pierre
GENIAL LA FONCTION TOUTE FAITE ELLE MARCHE COMME SUR DES ROULETTES

Il ne me sera pas trop difficile de faire l'inverse, c'est à dire de
réaliser la conversion d'un Alpha vers un INTEGER

Merci de votre aide Précieuse.


"Nicolas LETULLIER" a écrit :

Bonjour,

Tu peux ajouter un champ IDENTITY en INTEGER qui te génèrera ta clé
numérique, puis, comme le dit Med, utiliser une fonction de conversion pour
un autre champ calculé à partir de cette clé.

Exemple de fonction (à vérifier)

CREATE FUNCTION IntToAlpha(@Value INT) RETURNS VARCHAR(10) AS
BEGIN
DECLARE @i INT
DECLARE @Result VARCHAR(10)
SET @Result = ''

WHILE @Value > 0
BEGIN
SET @i = @Value - 26 * (@Value / 26)
IF (@i = 0) SET @i = 26
SET @Result = CHAR(@i + 64) + @Result
SET @Value = @Value / 26
IF @i = 26
SET @Value = @Value -1
END
RETURN @Result
END


Nicolas

"Pierre" a écrit dans le message de news:

> Bonjour
>
> Existe t-il une fonction transact sql (ou une astuce dans le cas échéant)
> permettant d'incrémenter un Compteur alphabétique ?
> Exemple de A -> B -> C .....-> AA ->.....AZ .... & ?
>
> Toute suggestion me permettant d'explorer des possibilités me sauvera.
>
> Thank !





Avatar
Yanos El Guerilleros
Salut,

Juste pour dire que tu peux eviter tes deux conditions IF dans ton code avec
une boucle du genre :

while @value>0
begin
set @i=( (@value+25) % 26 )+1
set @result=CHAR( @i + 64 )+@result
set @value = round( (@) / 26,0)
end

Ce code est une modif d'un autre plus compliqué mais normalement elle
fonctionne telle quelle (au pire il y a un chti réglage dans les valeurs).

A++

Yanos


"Nicolas LETULLIER" a écrit dans le
message de news:e9gIy%
Bonjour,

Tu peux ajouter un champ IDENTITY en INTEGER qui te génèrera ta clé
numérique, puis, comme le dit Med, utiliser une fonction de conversion


pour
un autre champ calculé à partir de cette clé.

Exemple de fonction (à vérifier)

CREATE FUNCTION IntToAlpha(@Value INT) RETURNS VARCHAR(10) AS
BEGIN
DECLARE @i INT
DECLARE @Result VARCHAR(10)
SET @Result = ''

WHILE @Value > 0
BEGIN
SET @i = @Value - 26 * (@Value / 26)
IF (@i = 0) SET @i = 26
SET @Result = CHAR(@i + 64) + @Result
SET @Value = @Value / 26
IF @i = 26
SET @Value = @Value -1
END
RETURN @Result
END


Nicolas

"Pierre" a écrit dans le message de


news:

> Bonjour
>
> Existe t-il une fonction transact sql (ou une astuce dans le cas


échéant)
> permettant d'incrémenter un Compteur alphabétique ?
> Exemple de A -> B -> C .....-> AA ->.....AZ .... & ?
>
> Toute suggestion me permettant d'explorer des possibilités me sauvera.
>
> Thank !