Re: Random multiple times

From: Szymon Guz <mabewlun(at)gmail(dot)com>
To: Oliver Kohll - Mailing Lists <oliver(dot)lists(at)gtwm(dot)co(dot)uk>
Cc: pgsql-general <pgsql-general(at)postgresql(dot)org>
Subject: Re: Random multiple times
Date: 2011-09-21 10:43:30
Message-ID: CAFjNrYur32QJLAUL7k-htKkvnsru4mntCmfEV6bx02+_=FLJsQ@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-general

On 21 September 2011 11:18, Szymon Guz <mabewlun(at)gmail(dot)com> wrote:

>
>
> On 21 September 2011 10:51, Oliver Kohll - Mailing Lists <
> oliver(dot)lists(at)gtwm(dot)co(dot)uk> wrote:
>
>> Hi,
>>
>> I understand random() is a volatile function and runs multiple times for
>> multiple rows returned by a SELECT, however is there a way of getting it to
>> run multiple times *within* another function call and in the same row. i.e.
>> something like
>>
>> select regexp_replace('+1 555 555 555', E'\\d', trunc(random() * 9 +
>> 1)::text,'g');
>> regexp_replace
>> ----------------
>> +1 111 111 111
>> (1 row)
>>
>> As you can see, it returns the same digit each time. I've tried wrapping a
>> select around the trunc too.
>>
>> Regards
>> Oliver Kohll
>> www.gtwm.co.uk / www.agilebase.co.uk
>>
>>
>>
>>
> Short answer is: yes. More information you can find here
> http://simononsoftware.com/problem-with-random-in-postgresql-subselect/
>
> regards
> Szymon
>
>
>
Sorry for the previous answer, this is not correct answer to your problem...
try this one:

with splitted as (
select regexp_split_to_table('+1 555 555 555', '') as x
)
select
array_to_string(
array_agg(
regexp_replace(x, E'\\d', trunc(random()*9 + 1)::text, 'g')
),
'')
from splitted;

The problem was that in your query the function was called once (for
creating the params of the function regexp_replace, you had there only one
call of this function, so random() was also called once.
In my query the regexp is called for each char from the input string.

regards
Szymon

In response to

Responses

Browse pgsql-general by date

  From Date Subject
Next Message Martín Marqués 2011-09-21 12:56:01 SQL function and input variables
Previous Message Emanuel Araújo 2011-09-21 10:38:14 Problem dbi_link with postgresql 9.04