Je suggère cette solution simple :
Il s'agit d'une fonction assez simple qui renvoie une chaîne aléatoire de la longueur donnée :
Create or replace function random_string(length integer) returns text as
$$
declare
chars text[] := '{0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z}';
result text := '';
i integer := 0;
begin
if length < 0 then
raise exception 'Given length cannot be less than 0';
end if;
for i in 1..length loop
result := result || chars[1+random()*(array_length(chars, 1)-1)];
end loop;
return result;
end;
$$ language plpgsql;
Et l'usage :
select random_string(15);
Exemple de sortie :
select random_string(15) from generate_series(1,15);
random_string
-----------------
5emZKMYUB9C2vT6
3i4JfnKraWduR0J
R5xEfIZEllNynJR
tMAxfql0iMWMIxM
aPSYd7pDLcyibl2
3fPDd54P5llb84Z
VeywDb53oQfn9GZ
BJGaXtfaIkN4NV8
w1mvxzX33NTiBby
knI1Opt4QDonHCJ
P9KC5IBcLE0owBQ
vvEEwc4qfV4VJLg
ckpwwuG8YbMYQJi
rFf6TchXTO3XsLs
axdQvaLBitm6SDP
(15 rows)
0 votes
Une autre solution peut être trouvée ici stackoverflow.com/a/13675441/398670
0 votes
La question initiale clairement parle du caractère aléatoire qui a une valeur au-delà de l'apparence. J'ai mis à jour le titre de la question pour refléter l'intention de @gersh.
8 votes
J'ai modifié le titre de façon à ce que les réponses existantes aient toujours un sens, et que la réponse d'Evan, qui apporte une touche de modernité, soit également adaptée. Je ne veux pas verrouiller cette vieille question pour une dispute sur le contenu - alors faisons en sorte que toute modification supplémentaire soit adaptée à la situation. todo les réponses s'il vous plaît.
1 votes
Cool, voyons si @gersh peut clarifier cette question car il y a un désaccord légitime quant à son intention initiale. Si son intention initiale est ce que je suppose être, beaucoup de ces réponses doivent être ajustées, rétrogradées ou retirées. Et, peut-être qu'une nouvelle question sur la génération de chaînes de caractères à des fins de test (ou autre) devrait être posée (là où @gersh a répondu).
random()
ness n'est pas nécessaire). Si ce n'est pas ce que je suppose, alors ma réponse doit plutôt être adaptée à la question affinée.5 votes
@EvanCarroll - gersh a été vu pour la dernière fois le 21 novembre 2015.
5 votes
Pour tous ceux qui se posent cette question en 2017, prenez en compte la réponse d'Evan. stackoverflow.com/a/41608000/190234 car elle utilise des méthodes qui n'étaient pas disponibles lorsque la question a été posée et répondue à l'origine.