Re: Generating random values.
От | Chris Travers |
---|---|
Тема | Re: Generating random values. |
Дата | |
Msg-id | 43037F02.7010501@travelamericas.com обсуждение исходный текст |
Ответ на | Generating random values. (Fernando Lujan <flujan@gmail.com>) |
Список | pgsql-general |
Hi Fernando; I think that PL/Perl would be the easiest language to use in this case. However, you could use PL/PGSQL and do something like: 1) Generate a random number (RANDOM()) and multiply it by a base value, and add something to it to bring it within a certain range. 2) Look up the ASCII character associated with the random number. I forget the function name, but it is listed, I think, under string functions in the docs. 3) Concatenate this onto the end of your string. The operator is ||. Doing this with a fixed-length password would be extremely easy. If you have to do it with a variable length password, then the logic will need to be a loop. THis is probably the cleanest way to do it. You could probably even do this with ANSI SQL functions with a clever case statement (I am assuming that a function is allowed to call itself). Something like: create function random_string(int, varchar) returns varchar AS ' select CASE WHEN length($2) < $1 THEN random_string($2 || chr((random() * (ascii_max - ascii_min))::int + ascii_min), $1) ELSE $2 END ' LANGUAGE SQL; Of course replace ascii_max and ascii_min with the maximum and minimum ascii values you want it to use. You can then create another function like this: CREATE FUNCTION random_string(int) returns varchar AS ' SELECT random_string($1, ''''); ' LANGUAGE SQL; This becomes much harder when working with Unicode, I think.... Best Wishes, Chris Travers Metatron Technology Consulting Fernando Lujan wrote: >Hi folks, > >I have a table wich contains my users... I want to insert to each user >a random password, so I need a random function. Is there such function >in Postgres? I just found the RANDOM which generates values between >0.0 and 1.0. > >Any help or suggestion will be appreciated. :) > >Fernando Lujan > >---------------------------(end of broadcast)--------------------------- >TIP 9: In versions below 8.0, the planner will ignore your desire to > choose an index scan if your joining column's datatypes do not > match > > > >
В списке pgsql-general по дате отправления: