OVH Cloud OVH Cloud

Access a-t-il un équivalent à la fonction T-SQL "replicate"

3 réponses
Avatar
François Ligouy
Dans Transact SQL, la fonction "replicate" permet de dupliquer une chaine n
fois :
ainsi, la requête "SELECT REPLICATE('bye', 4) from table1" renvoie
"byebyebyebye" (autant de fois qu'il existe de lignes dans "table1").
Existe-t-il un équivalent dans Access?

3 réponses

Avatar
Gafish
Bonjour aussi,

François Ligouy wrote:
Dans Transact SQL, la fonction "replicate" permet de dupliquer une
chaine n fois :
ainsi, la requête "SELECT REPLICATE('bye', 4) from table1" renvoie
"byebyebyebye" (autant de fois qu'il existe de lignes dans "table1").
Existe-t-il un équivalent dans Access?


Il ne me semble pas, tu as bien la fonction String(n, c) avec n nombre et c
un caractère, mais elle ne permet que de répéter n fois un caractère.

Arnaud
--
Charte du forum : http://users.skynet.be/mpfa/
Recherche dans les archives :
http://groups.google.fr/group/microsoft.public.fr.access?hl=fr

Avatar
Eric
Bonjour,

Je ne l'ai jamais rencontrée mais elle ne parait pas difficile à
réaliser, si j'ai bien compris.

En faisant au plus simple, dans un module :
Function fnReplicate(unMot As String, unNombre As Byte) As String
Dim i As Byte, tmp As String
For i = 1 To unNombre
tmp = tmp & unMot
Next i
fnReplicate = tmp
End Function

et après aucun probleme pour faire un truc du genre :
SELECT fnReplicate('bye',4) AS EquivReplicate
FROM Table1;


--
A+
Eric
Un petit tour ici : http://users.skynet.be/mpfa/
Accès aux archives :
http://groups.google.fr/group/microsoft.public.fr.access?hl=fr

Dans Transact SQL, la fonction "replicate" permet de dupliquer une chaine n
fois :
ainsi, la requête "SELECT REPLICATE('bye', 4) from table1" renvoie
"byebyebyebye" (autant de fois qu'il existe de lignes dans "table1").
Existe-t-il un équivalent dans Access?


Avatar
François Ligouy
Un grand merci à tous les deux. A Gafish d'abord parce que ma problématique
réelle portait justement sur la recopie d'un seul et même caractère, à Eric
ensuite parce que sa solution est plus générale et fonctionne également dans
le cas d'une chaîne.
Travaillant plus souvent avec SQL Server qu'avec Access, je n'ai pas
toujours les bons réflexes avec ce dernier.


Bonjour,

Je ne l'ai jamais rencontrée mais elle ne parait pas difficile à
réaliser, si j'ai bien compris.

En faisant au plus simple, dans un module :
Function fnReplicate(unMot As String, unNombre As Byte) As String
Dim i As Byte, tmp As String
For i = 1 To unNombre
tmp = tmp & unMot
Next i
fnReplicate = tmp
End Function

et après aucun probleme pour faire un truc du genre :
SELECT fnReplicate('bye',4) AS EquivReplicate
FROM Table1;


--
A+
Eric
Un petit tour ici : http://users.skynet.be/mpfa/
Accès aux archives :
http://groups.google.fr/group/microsoft.public.fr.access?hl=fr

Dans Transact SQL, la fonction "replicate" permet de dupliquer une chaine n
fois :
ainsi, la requête "SELECT REPLICATE('bye', 4) from table1" renvoie
"byebyebyebye" (autant de fois qu'il existe de lignes dans "table1").
Existe-t-il un équivalent dans Access?