On 21 September 2011 10:51, Oliver Kohll - Mailing Lists <oliver.lists@xxxxxxxxxx> 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